Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » [архив] Скрипты Inno Setup. Помощь и советы [часть 2]

Закрытая тема
Настройки темы
[архив] Скрипты Inno Setup. Помощь и советы [часть 2]

Ветеран


Сообщения: 1133
Благодарности: 581


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: jameszero
Дата: 08-11-2010
Описание: тема закрыта
Лимит страниц.
Тема закрыта.
Продолжение по ссылке Скрипты Inno Setup. Помощь и советы [часть 3]




Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;
    Предыдущая версия: 5.3.0 [07.04.2009] - Скачать (зеркало) | Русификатор (зеркало);

  • Inno Script Generator - ещё один редактор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать;

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы. Официальный сайт - недоступен.
    Последняя версия: 2.0.8 [12.11.2006] - Страница с зеркалами;

  • Inno Setup GameScript Generator - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;

  • ISSkin - Программа для создания и добавления в инсталлятор скинов. Инструкция.
    Последняя версия: 3.0.0.0 [19.01.2010] - Скачать;

  • InnoSetup Script Joiner - Программа для объединения нескольких скриптов InnoSetup в один;

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.3 [11.09.2009] - Скачать;


Ссылка на архив предыдущей темы (также можно скачать из вложения)

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.


Отправлено: 22:06, 23-08-2009

 

Аватара для Молодой

Новый участник


Сообщения: 30
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброго времени суток создал скрипт вроде бы все нормально, но одно "НО"
Ярлык который сохраняется на раб.столе запускает игру из корня папки куда собственно установлена игра,

На рисунке видно что запуск идет из корня папки, а что бы запустить игру, надо что бы ярлык ссылался на .exe файл из папки bin, как это поправить.
Вот сам скрипт
skript

[Setup]
AppId={{2FFF3EDA-EFE4-4772-9A96-202597408568}
AppName=Far Cry 2
AppVerName=Far Cry 2
AppPublisher=Repack By BaRS
DefaultDirName={pf}\Far Cry 2
DefaultGroupName=Far Cry 2
OutputDir=C:\Users\BaRS\Desktop\Install\Far Cry 2
OutputBaseFilename=setup
SetupIconFile=C:\Users\BaRS\Desktop\Install\Far Cry 2\FarCry2_2.ico
Compression=lzma/ultra64
SolidCompression=true
InternalCompressLevel=ultra64

[Languages]
Name: english; MessagesFile: compiler:Default.isl
Name: russian; MessagesFile: compiler:Languages\Russian.isl

[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked

[Files]
Source: D:\Game\Far Cry 2\bin\farcry2.exe; DestDir: {app}; Flags: ignoreversion
Source: D:\Game\Far Cry 2\manual.pdf; DestDir: {app}; Flags: ignoreversion
Source: D:\Game\Far Cry 2\ReadMe.txt; DestDir: {app}; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: {group}\Far Cry 2; Filename: {app}\farcry2.exe
Name: {commondesktop}\Far Cry 2; Filename: {app}\farcry2.exe; Tasks: desktopicon

[Run]
Filename: {app}\farcry2.exe; Description: {cm:LaunchProgram,Far Cry 2}; Flags: nowait postinstall skipifsilent
Filename: {src}\Data_Win32.exe; WorkingDir: {app}; Parameters: -x -y -s2 -d.; StatusMsg: Идет распаковка данных...; Flags: runasoriginaluser
Filename: {src}\bin.exe; WorkingDir: {app}; Parameters: -x -y -s2 -d.; StatusMsg: Идет распаковка данны...; Flags: runasoriginaluser

[Registry]
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Far Cry 2; ValueType: string; ValueName: InstallDir; ValueData: D:\Game\Far Cry 2
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Far Cry 2; ValueType: string; ValueName: Executable; ValueData: D:\Game\Far Cry 2\bin\FarCry2.exe
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Far Cry 2; ValueType: string; ValueName: Language; ValueData: Russian
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Far Cry 2; ValueType: string; ValueName: Version; ValueData: 1.03.00
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Far Cry 2; ValueType: string; ValueName: SecuROM; ValueData: 1
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Far Cry 2; ValueType: string; ValueName: Online; ValueData: 1
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Far Cry 2\GameUpdate; ValueType: string; ValueName: execPath; ValueData: D:\Game\Far Cry 2\bin\FarCry2.exe
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Far Cry 2\GameUpdate; ValueType: string; ValueName: info; ValueData: 2c66b725e7fb0697c0595397a14b0bc8
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Far Cry 2\GameUpdate; ValueType: string; ValueName: installdir; ValueData: D:\Game\Far Cry 2
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Far Cry 2\GameUpdate; ValueType: string; ValueName: language; ValueData: us
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Prince of Persia The Sands of Time\1.00.181; ValueType: string; ValueName: Product_Path; ValueData: D:\Game\Akella Games\Ïðèíö Ïåðñèè - Ïåñêè âðåìåíè
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Prince of Persia The Sands of Time\1.00.181; ValueType: string; ValueName: Product_Executable; ValueData: PrinceOfPersia.exe
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Prince of Persia The Sands of Time\1.00.181; ValueType: string; ValueName: Product_Language; ValueData: 9
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Prince of Persia The Sands of Time\1.00.181; ValueType: string; ValueName: Product_Release; ValueData: Retail EMEA

[code]
var
NeedSize:Integer; FreeMB, TotalMB: Cardinal; NeedSpaceLabel,FreeSpaceLabel: TLabel;

procedure GetFreeSpaceCaption(Sender: TObject);
var
Path: String;
begin
Path := ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
if FreeMB > 1024 then
FreeSpaceLabel.Caption := 'Свободное место на диске: '+ FloatToStr(round(FreeMB/1024*100)/100) + ' GB' else
FreeSpaceLabel.Caption := 'Свободное место на диске '+ IntToStr(FreeMB)+ ' MB';
if FreeMB < NeedSize then
WizardForm.NextButton.Enabled := False else
WizardForm.NextButton.Enabled := True; end;

procedure GetNeedSpaceCaption;
begin
if NeedSize > 1024 then
NeedSpaceLabel.Caption := 'Требуется как минимум места на диске: '+ FloatToStr(round(NeedSize/1024*100)/100) + ' GB' else
NeedSpaceLabel.Caption := 'Требуется как минимум места на диске: '+ IntToStr(NeedSize)+ ' MB';
end;

procedure InitializeWizard();
begin
NeedSize := 3200;

WizardForm.DiskSpaceLabel.Hide;

NeedSpaceLabel := TLabel.Create(WizardForm);
with NeedSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(202);
Width := ScaleX(209);
Height := ScaleY(13);
end;

FreeSpaceLabel := TLabel.Create(WizardForm);
with FreeSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(220);
Width := ScaleX(209);
Height := ScaleY(13);
end;
WizardForm.DirEdit.OnChange := @GetFreeSpaceCaption;
WizardForm.DirEdit.Text := WizardForm.DirEdit.Text + #0;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpSelectDir then begin
GetNeedSpaceCaption;
if FreeMB < NeedSize then
WizardForm.NextButton.Enabled:=False
end;
end;

[UninstallDelete]
Name: {app}\*.*; Type: filesandordirs




Заранее благодарен за ответ

-------
Да поможет мне CTRL + ALT + DELETE


Отправлено: 14:53, 15-12-2009 | #671



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для YURSHAT

Старожил


Сообщения: 163
Благодарности: 78

Профиль | Отправить PM | Цитировать


Цитата Молодой:
а что бы запустить игру, надо что бы ярлык ссылался на .exe файл из папки bin, как это поправить. »
Элементарно!

Name: {commondesktop}\Far Cry 2; Filename: {app}\bin\farcry2.exe; WorkingDir: "{app}\bin"; Tasks: desktopicon

-------
Если я знаю, что знаю мало, я добьюсь того, чтобы знать больше... В.И. Ленин
Krinkels.org - сжатие данных и создание инсталляторов


Последний раз редактировалось YURSHAT, 15-12-2009 в 15:03. Причина: Поправил

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:01, 15-12-2009 | #672


Аватара для Молодой

Новый участник


Сообщения: 30
Благодарности: 0

Профиль | Отправить PM | Цитировать


Большое спасибо, за помошь!

-------
Да поможет мне CTRL + ALT + DELETE


Отправлено: 15:15, 15-12-2009 | #673


Ветеран


Сообщения: 1133
Благодарности: 581

Профиль | Отправить PM | Цитировать


Цитата Dark Engel:
как все таки реализовать мой вопрос »
Пример
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl

[Code]
function DetectInstall(ProgName: string; ver: Integer): Boolean;
var
  Names: TArrayOfString;
  ResultDWord: Cardinal;
  i: Integer;
  s, msg: string;
begin
  Result:= True;
  if RegGetValueNames(HKEY_LOCAL_MACHINE, 'Software\UIT\FAP', Names) then
    begin
      for i:= 0 to GetArrayLength(Names)-1 do
        if Lowercase(ProgName) = Lowercase(Names[i]) then
          begin
            RegQueryDWordValue(HKEY_LOCAL_MACHINE, 'Software\UIT\FAP', Names[i], ResultDWord);
            if ResultDWord > ver then
              begin
                msg:= 'Установленная версия новее.';
                Result:= False;
              end
            else msg:= 'Рекомендуется обновить программу.';
            if ResultDWord = ver then
              begin
                msg:= 'Данная версия уже установлена.';
                Result:= False;
              end;
            MsgBox(msg, mbInformation, MB_OK);
            Break;
          end;
    end;
end;

function InitializeSetup(): Boolean;
begin
  // указываем название нашей программы и её версию
  Result:= DetectInstall('proga2', 16);
end;

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:50, 15-12-2009 | #674


Ветеран


Сообщения: 1133
Благодарности: 581

Профиль | Отправить PM | Цитировать


Цитата R.i.m.s.k.y.:
Как будто не успевает процедура FFD отработать. »
Замените все ewNoWait на ewWaitUntilTerminated и будет успевать вноситься.

Цитата SinRoma:
Подскажите как перейти? »
Должно быть так:
Подробнее
Код: Выделить весь код
//Определяем дополнительную страницу для Project (с кнопкой «Обзор…»)
var
  ProjectDirPage: TInputDirWizardPage;
  VSTDirPage: TInputDirWizardPage;

function GetProjectDir(Param: String): String;
begin
  Result := ProjectDirPage.Values[0];
end;

function GetVSTDir(Param: String): String;
begin
  Result := VSTDirPage.Values[0];
end;

function NextButtonClick(CurPage: Integer): Boolean;
begin
  if CurPage = ProjectDirPage.ID then
    begin
      if ProjectDirPage.Values[0] = '' then // это условие никогда не выполнится
      //   Указываем путь папки с проектами по умолчанию
      ProjectDirPage.Values[0] := (ExpandConstant('{sd}')+'\Projects');
    end;
  if CurPage = VSTDirPage.ID then
    begin
      if VSTDirPage.Values[0] = '' then // это условие тоже никогда не выполнится
      //   Указываем путь к папке VST Plugins
      VSTDirPage.Values[0] := (ExpandConstant('{pf}')+'\VSTPlugins');
    end;
  Result := True;
end;

// ***************************************************************************************************************************************

//Это страница, в которой отображаются выбранные параметры установки
//Чтобы в нее прописать указанный путь установки папки с проектами, пишем следующую функцию
//По необходимости указываем дополнительные параметры установки (компоненты и т.п.)

function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
var
  S: String;
begin
  S := S + MemoDirInfo;
  S := S + NewLine + NewLine;
  S := S + 'Папка с проектами:' + NewLine + Space;
  S := S + ProjectDirPage.Values[0];
  S := S + 'VST Plugins:' + NewLine + Space;
  S := S + ProjectDirPage.Values[0];
  Result := S;
end;

procedure InitializeWizard();
begin
  // InitializeWizardCWP
  //Создание дополнительной страницы после указанной wpSelectProgramGroup
  ProjectDirPage := CreateInputDirPage(wpSelectProgramGroup,
    'Выбор папки с проектами', 'В какой папке будут находиться проекты программы?',
    'Пожалуйста, укажите папку, в которой будут сохранены проекты программы.'#13#13'Путь к папке с проектами может быть изменен в "ххх">"ххх".',
    False, '');
  ProjectDirPage.Add('');
  ProjectDirPage.Values[0] := GetPreviousData('ProjectDir', '');

  // InitializeWizardVST
  //Создание дополнительной страницы после указанной wpSelectProgramGroup
  VSTDirPage := CreateInputDirPage(ProjectDirPage.ID,
//                                  ^^^^^ тут указать предыдущую страницу? как?
    'Выбор папки с VST Plugins', 'В какой папке будут находиться VST Plugins?',
    'Пожалуйста, укажите папку, в которую будут VST Plugins.'#13#13'Путь к папке с VST Plugins может быть изменен в "ххх">"ххх".',
    False, '');
  VSTDirPage.Add('');
  VSTDirPage.Values[0] := GetPreviousData('VSTDir', '');
end;

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:47, 15-12-2009 | #675


Аватара для Winstan

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Serega,
Подскажи как в procedure InitializeUninstallProgressForm();
ProgressBar назвать так как он прикрыт изображением.
Если же прописывать пб таким образом как визарде то он бесполезен.

Отправлено: 22:24, 15-12-2009 | #676


Ветеран


Сообщения: 1133
Благодарности: 581

Профиль | Отправить PM | Цитировать


Цитата Winstan:
как в procedure InitializeUninstallProgressForm(); »
Я так полагаю, что изображение загружено на какой-то контрол, если да то:
UninstallProgressForm.ProgressBar.Parent:= ваш контрол;

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.


Последний раз редактировалось Serega, 15-12-2009 в 23:06. Причина: орфография

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:34, 15-12-2009 | #677


Аватара для R.i.m.s.k.y.

Ветеран


Сообщения: 1640
Благодарности: 536

Профиль | Отправить PM | Цитировать


Здравствуйте!

Подскажите, пожалуйста, как передать инсталлеру параметр и обработать его в секциях Code, Registry и Run, например инсталлер называется ffd, нужно передать ему параметр auto (ffd.exe /auto).

Точнее надо так, чтобы при параметре /auto инсталлер не отсвечивал лишними окнами (окно прогресса можно, догадываюсь что надо добавить /silent, но при параметре /auto в скрипте должны отрабатываться свои "ветки"), а без этого параметра инсталлер запускался как обычно - с выбором компонентов.

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Отправлено: 09:10, 16-12-2009 | #678


Ветеран


Сообщения: 989
Благодарности: 38

Профиль | Отправить PM | Цитировать


Serega, подскажите пожалуйста!
Можно ли как-то задать порядок расположение ярлыков устанавливаемого приложения в Пуск-Программы?
Например:
Код: Выделить весь код
[Icons]
1.Name: {group}\Nero Burning ROM
2.Name: {group}\Nero Express
3.Name: {group}\Nero Vision
4.Name: {group}\Nero CoverDesigner
5.Name: {group}\Nero WavEditor
6.Name: {group}\Утилиты\Nero BurnRights
7.Name: {group}\Утилиты\Nero DiscSpeed
8.Name: {group}\Утилиты\Nero DriveSpeed
9.Name: {group}\Утилиты\Nero InfoTool
10.Name: {group}\Удаление
Потому-что папка Утилиты получается последней, после удаления, а хотелось бы перед ней.

Отправлено: 12:47, 16-12-2009 | #679


Новый участник


Сообщения: 14
Благодарности: 3

Профиль | Отправить PM | Цитировать


МИШАНЧИК, в меню пуск файлы сортируются по алфавиту, измените название папки Удаление, чтобы сместить его вниз.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:00, 16-12-2009 | #680



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » [архив] Скрипты Inno Setup. Помощь и советы [часть 2]

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58
[архив] Inno Setup .:[все вопросы]:. Mchik Автоматическая установка приложений 1329 23-08-2009 20:13
[архив - Часть 2] AutoIt скрипты Vadikan AutoIt 985 21-01-2008 09:58
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
[Архив - Часть 1.1] AutoIt скрипты EgOrus AutoIt 335 04-02-2006 16:58




 
Переход