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

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

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

Аватара для El Sanchez

Ветеран


Contributor


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


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

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


Изменения
Автор: El Sanchez
Дата: 06-06-2020
Внимание! Данная тема предназначена только для обсуждения написания скриптов!
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:

Показать/скрыть: Ссылки на примеры скриптов:

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

  • Inno Script Generator - генератор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать | зеркало на русифицированную программу;
    Примечание: Родной сайт www.hisoft2000.de более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы.
    Последняя версия: 2.0.8 [12.11.2006] - Скачать;
    Примечание: Родной сайт http://isfd.kaju74.de/index.php?isfd более недоступен, поэтому здесь расположены сторонние ссылки.

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

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

  • ISSJoiner - Программа для объединения нескольких скриптов InnoSetup в один.
    Последняя версия: 3.0 [23.07.2009]

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

  • RegExporter - Бесплатная утилита для экспорта реестра и конвертации файлов *.reg и *.ini в инсталляционные скрипты Inno Setup и NSIS.
    Последняя версия: 1.3.0 [17.01.2015] - Скачать;



Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:

Скрипты Inno Setup. Помощь и советы [часть 6] | Скрипты Inno Setup. Помощь и советы [часть 6].7z
Скрипты Inno Setup. Помощь и советы [часть 7] | Скрипты Inno Setup. Помощь и советы [часть 7].7z
Скрипты Inno Setup. Помощь и советы [часть 8] | Скрипты Inno Setup. Помощь и советы [часть 8].7z
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:09, 04-04-2018

 

Аватара для El Sanchez

Ветеран


Contributor


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

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


Цитата lmiol:
Появилась необходимость скачивать архив, распаковывать и устанавливать. Inno Setup версия 6.2.0 »
Скрытый текст

Код: Выделить весь код
#define MyAppName "bla"
#define MyAppVersion "1.0.0"
#define MyAppPublisher "bla"
#define MyAppURL "https://www.bla.com/"
#define MyAppExeName "bla.exe"

[Setup]
AppId={{9B58D044-A076-47B2-B426-FC6CA298390A}}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
AllowCancelDuringInstall=no
DefaultDirName={autopf}\{#MyAppName}
; bla-portable.zip extracted size
ExtraDiskSpaceRequired=8293003
WizardStyle=classic

[Languages]
Name: ru; MessagesFile: compiler:Languages\russian.isl

[Messages]
SetupWindowTitle={#MyAppName}

[Files]
Source: 7za.exe; DestDir: {tmp}; Flags: deleteafterinstall

[Run]
Filename: {tmp}\7za.exe; Parameters: "x ""{tmp}\bla-portable.zip"" -o""{app}\"" * -r -aoa"; Flags: runhidden runascurrentuser;
Filename: {app}\{#MyAppExeName}; Description: {cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}; Flags: nowait postinstall skipifdoesntexist

[Code]
function ShellExecute(hwnd: HWND; const lpOperation, lpFile, lpParameters, lpDirectory: string;
  nShowCmd: Integer): THandle; external 'ShellExecuteW@shell32.dll stdcall';

var
  DownloadPage: TDownloadWizardPage;

procedure ModifyWizardForm;
begin
  WizardForm.MainPanel.Hide;
  WizardForm.Bevel.Hide;
  WizardForm.Bevel1.Hide;
  WizardForm.Width := ScaleX(640);
  WizardForm.Height := ScaleY(270);
  DownloadPage := CreateDownloadPage(SetupMessage(msgWizardPreparing), SetupMessage(msgPreparingDesc), nil);
end;

function InitializeSetup: Boolean;
begin
  Result := WizardSilent;
  if not Result then
    ShellExecute(0, 'open', ExpandConstant('{srcexe}'), '/SILENT', '', SW_SHOWNORMAL);
end;

procedure InitializeWizard;
begin
  ModifyWizardForm;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  case CurStep of
    ssInstall:
      begin
        DownloadPage.Clear;
        DownloadPage.Add('https://github.com/jrsoftware/issrc/archive/refs/heads/main.zip', 'bla-portable.zip', '');
        DownloadPage.Show;
        try
          DownloadPage.Download;
        except
          if DownloadPage.AbortedByUser then
            SuppressibleMsgBox(AddPeriod(GetExceptionMessage), mbCriticalError, MB_OK, IDOK);
        finally
          DownloadPage.Hide;
        end;
      end;
  end;
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:25, 17-02-2022 | #741



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

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


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


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

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


Цитата El Sanchez:
»
У нас есть уже скрипт по работе с нативным загрузчиком от Inno Setup (который появился с 6.1.2 версии)

HTML код: Выделить весь код
#define MyAppName "bla" #define MyAppVersion "1.0.0" #define MyAppPublisher "2PPL Interactive" #define MyAppURL "https://www.bla.com/" #define MyAppExeName "bla.exe" [Setup] ; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications. ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) ;SignTool=signtools $f AppId={{9B58D044-A076-47B2-B426-FC6CA298390A} AppName={#MyAppName} AppVersion={#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={autopf}\{#MyAppName} DisableProgramGroupPage=yes PrivilegesRequired=lowest PrivilegesRequiredOverridesAllowed=commandline OutputDir=C:\bla\App Installer OutputBaseFilename=bla-setup SetupIconFile=C:\bla\App Installer\installerIcon.ico Compression=zip SolidCompression=yes WizardStyle=classic AllowCancelDuringInstall=no WindowResizable=no [Languages] Name: "english"; MessagesFile: "compiler:Default.isl" [Files] ; NOTE: Don't use "Flags: ignoreversion" on any shared system files Source: "C:\bla\App Installer\bla-portable\7za.exe"; DestDir: {tmp}; Flags: deleteafterinstall [Icons] Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" [Run] Filename: "{tmp}\7za.exe"; Check: ShouldRun; Parameters: "x ""{tmp}\bla-portable.zip"" -r -aoa -o""{app}"" *"; Flags: runhidden runascurrentuser; Filename: "{app}\{#MyAppExeName}"; Check: ShouldRun; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall; [Messages] SetupWindowTitle={#MyAppName} {#MyAppVersion} [code] //---------------------- //Silent Mode #ifdef UNICODE #define AW "W" #else #define AW "A" #endif type HINSTANCE = THandle; function ShellExecute(hwnd: HWND; lpOperation: string; lpFile: string; lpParameters: string; lpDirectory: string; nShowCmd: Integer): HINSTANCE; external 'ShellExecute{#AW}@shell32.dll stdcall'; function InitializeSetup: Boolean; begin // if this instance of the setup is not silent which is by running // setup binary without /SILENT parameter, stop the initialization Result := WizardSilent; // if this instance is not silent, then... if not Result then begin // re-run the setup with /SILENT parameter; because executing of // the setup loader is not possible with ShellExec function, we // need to use a WinAPI workaround if ShellExecute(0, '', ExpandConstant('{srcexe}'), '/SILENT', '', SW_SHOW) <= 32 then // if re-running this setup to silent mode failed, let's allow // this non-silent setup to be run Result := True; end; end; //---------------------- //Native Download var DownloadPage: TDownloadWizardPage; function OnDownloadProgress(const Url, Filename: string; const Progress, ProgressMax: Int64): Boolean; begin DownloadPage.Msg2Label.Visible := False; if ProgressMax <> 0 then begin //Log(Format(' %d of %d bytes done.', [Progress, ProgressMax])) end else Log(Format('Successfully downloaded file to {tmp}: %s', [FileName])); Result := True; end; var DownloadShowed: Boolean; var DownloadErrored: Boolean; function ShouldRun: Boolean; begin Result := not(DownloadErrored); end; procedure CurPageChanged(CurPageID: Integer); begin WizardForm.Bevel1.Visible := false; WizardForm.MainPanel.Visible := false; WizardForm.InnerNotebook.Top := 50; WizardForm.OuterNotebook.height := 400; if CurPageID = wpInstalling then begin if DownloadShowed = False then begin DownloadPage.Clear(); DownloadPage.Show(); end; end; if CurPageID = DownloadPage.ID then begin if DownloadShowed = False then begin DownloadShowed := True DownloadPage.Add('https://api.bla.com/download/bla-portable.zip', 'bla-portable.zip', ''); DownloadPage.Msg1Label.Font.Color := $8D7C72; DownloadPage.Msg1Label.Top := DownloadPage.Msg1Label.Top - 5; DownloadPage.ProgressBar.Top := DownloadPage.ProgressBar.Top - 65; DownloadPage.SetText('Installing...',''); DownloadPage.Msg2Label.Visible := False; DownloadPage.Msg2Label.Top := 400; end; try DownloadPage.Download(); except SuppressibleMsgBox(AddPeriod(GetExceptionMessage), mbCriticalError, MB_OK, IDOK); DownloadErrored := True; WizardForm.Close; finally DownloadPage.Hide(); end; end; end; //---------------------- //Init window and style procedure InitializeWizard(); begin WizardForm.ProgressGauge.Top := WizardForm.ProgressGauge.Top + 10; WizardForm.ProgressGauge.Visible := True; WizardForm.PageNameLabel.Height := 0; WizardForm.PageDescriptionLabel.Height := 0; WizardForm.StatusLabel.Visible := True; WizardForm.Bevel.Visible := False; WizardForm.CancelButton.Height := 0; WizardForm.Bevel1.Visible := False; WizardForm.WizardSmallBitmapImage.Visible := False; WizardForm.MainPanel.Color := WizardForm.Color; WizardForm.InnerPage.Color := WizardForm.Color; WizardForm.TasksList.Color := WizardForm.Color; WizardForm.InstallingPage.Color := WizardForm.Color; WizardForm.FilenameLabel.Visible := False; WizardForm.Width := 640; WizardForm.Height := 270; DownloadPage := CreateDownloadPage(SetupMessage(msgWizardPreparing), SetupMessage(msgPreparingDesc), @OnDownloadProgress); end; procedure CurInstallProgressChanged(CurProgress, MaxProgress: Integer); begin WizardForm.StatusLabel.Caption := 'Installing, please wait...'; WizardForm.StatusLabel.Top := -5; WizardForm.ProgressGauge.Top := 40; WizardForm.MainPanel.Visible := False; WizardForm.StatusLabel.Font.Color := $8D7C72; end;

мы его тестировали и остались недовольны.
Во время загрузки он довольно сильно лагает (тормозит окно)
из плюсов в нём только наличие прогрессбара в таскбаре пока идёт загрузка, но в остальном он довольно корявый. (по крайней мере на текущий момент)
Проверяли мы на 6.2.0

Всё же хочется исправить те 2 кейса для IDP
и использовать именно его (с нашим дизайном)

Последний раз редактировалось lmiol, 17-02-2022 в 14:41.


Отправлено: 12:48, 17-02-2022 | #742


Аватара для dracosha

Пользователь


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

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


lmiol, всё то, что предлагает господин El Sanchez не имеет ни тормозов, ни глюков. Лучше вежливо попросите его о помощи и этот парень продемонстрирует вам своё мастерство в таком духе, что после увиденного вам ничего не останется как сказать, что этот парень просто волшебник. El Sanchez виртуозно владеет компьютерными языками. Это тот человек, который не копирует код, а пишет его с нуля. Методов написания любого кода существует масса, но не каждый умеет так оптимизированно писать код, как господин El Sanchez.

-------
Если есть за что, жми Полезное сообщение. Пользы больше - флуда меньше :)


Последний раз редактировалось dracosha, 17-02-2022 в 17:00.

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

Отправлено: 16:31, 17-02-2022 | #743


Аватара для Vanadiy777

Ветеран


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

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


Цитата lmiol:
У нас есть уже скрипт по работе с нативным загрузчиком от Inno Setup »
Цитата lmiol:
мы его тестировали и остались недовольны. »
Цитата lmiol:
из плюсов в нём только наличие прогрессбара в таскбаре пока идёт загрузка, »
Цитата lmiol:
Всё же хочется исправить те 2 кейса для IDP »
lmiol, извините, коллега, возможно сейчас влезаю не в свое дело...

Вы простите, но возникает вопрос - Вам "шашечки", или ехать?

Маэстро El Sanchez дал Вам готовое решение по ваш компилятор..., причем, заметьте, абсолютно бесплатно...

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

Отправлено: 19:29, 17-02-2022 | #744


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


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

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


Цитата dracosha:
lmiol, всё то, что предлагает господин El Sanchez не имеет ни тормозов, ни глюков. Лучше вежливо попросите его о помощи и этот парень продемонстрирует вам своё мастерство в таком духе, что после увиденного вам ничего не останется как сказать, что этот парень просто волшебник. El Sanchez виртуозно владеет компьютерными языками. Это тот человек, который не копирует код, а пишет его с нуля. Методов написания любого кода существует масса, но не каждый умеет так оптимизированно писать код, как господин El Sanchez. »
Цитата Vanadiy777:
lmiol, извините, коллега, возможно сейчас влезаю не в свое дело...
Вы простите, но возникает вопрос - Вам "шашечки", или ехать?
Маэстро El Sanchez дал Вам готовое решение по ваш компилятор..., причем, заметьте, абсолютно бесплатно... »
Кланяться в ноги за то, что я не просил я не собираюсь. Учитывая что у нас этот вариант тоже был и мы его тестировали уже и отклонили. Я по факту вроде бы так и ответил.

У меня в посте указан плагин IDP, конкретный дизайн, конкретная проблема: я просил дополнить наш скрипт исправив проблему по двум кейсам.
Я понимаю, что возможно Маэстро хотел как лучше и переписал на нативку, но факт остаётся фактом: это не то что мы просили.

И не круто тут как чайки налетать на меня и делать вид, что я не благодарный.
А также необязательно зачмокивать друг друга благодарностями на свои остроты.

Конкретно претензий к Маэстро за то, что нативка лагает - нет. Ведь это проблема Inno Setup и это уже пройденный нами этап (повторюсь еще раз)

Мы можем попытаться раздуть эту тему. Но я бы очень хотел сконцентрироваться на решении проблемы. Т.е. на финальном результате.

От оплаты доработок нашего скрипта по двум кейсам в 1к я не отказываюсь
Для защиты своей работы можете не выкладывать код, а локально собрать и во время звонка (гугл мит например) продемонстрировать работу установщика. Или записать видео показав работу двух кейсов.

Мне кажется El Sanchez просто было лень вникать в то, что я написал и он просто решил сделать по-быстрому, так как уже где-то реализовывал. Буду рад если я не прав.
Всё сводится к тому что своими силами мы разберёмся быстрее. Возможно, в этом и был ваш хитроумный план, поугнетать человека до тех пор, пока он не догадается до нужного решения.
Если так, то в аду для вас отдельный котёл, помощнички

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

Последний раз редактировалось lmiol, 18-02-2022 в 13:41.


Отправлено: 07:56, 18-02-2022 | #745


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


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

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


Код: Выделить весь код
procedure CurPageChanged(CurPageID: Integer);
begin
  WizardForm.Bevel1.Visible := false;
  WizardForm.MainPanel.Visible := false;
  WizardForm.InnerNotebook.Top := 50;
  WizardForm.OuterNotebook.height := 400;

  if CurPageID = wpInstalling then begin
    Downloaded := idpFilesDownloaded();
    if not(Downloaded) then begin
      ExitProcess(553);
    end;
  end;
end;

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
  if Cancel = True then begin
    ExitProcess(554);
  end;
end;
Вот кусок кода отвечающий за отмену в двух этих кейсах
жирным выделил текст, чтобы показать эти 2 кейса

Отправлено: 08:28, 18-02-2022 | #746


Аватара для El Sanchez

Ветеран


Contributor


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

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


Цитата lmiol:
1 Идёт окно Downloading вызываемое IDP, нажимаем на крестик закрытия окна и в появившемся модальном окне подтверждаем на Yes
Вместо того чтобы прервать Загрузку он пытается дальше выполнить установку и создает ярлыки »
lmiol, неправда. Если успели нажать Yes до того, как загрузка закончилась, то работает idpCancelButtonClick из idp.iss. А если разглядывать модальное окно и долго решать остановить загрузку или нет, то сама загрузка идёт дальше, и вот всё скачалось, ошибок нет и идёт дальше по сценарию, распаковка, ярлыки и прочее. Паузу автор не предусмотрел. Лучше в idp.iss участок кода с idpCancelButtonClick перепишите на:
Скрытый текст

Код: Выделить весь код
var
  DownloadFailed: Boolean;

function idpBackButtonClick(Page: TWizardPage): Boolean;
begin
  if not IDPOptions.NoRetryButton then // Retry button clicked
  begin
    DownloadFailed := False;
    idpStartDownload; 
    Result := False;
  end
  else
    Result := True;
end;

function idpNextButtonClick(Page: TWizardPage): Boolean;
begin
  Result := True;
end;

procedure idpCancelButtonClick(Page: TWizardPage; var Cancel, Confirm: Boolean);
begin
  Cancel := not DownloadFailed or ExitSetupMsgBox;
  if Cancel then
  begin
    IDPForm.Status.Caption := ExpandConstant('{cm:IDP_CancellingDownload}');
    WizardForm.Repaint;
    idpStopDownload;
    Confirm := False;
  end;
end;

procedure idpReportErrorHelper(Sender: TObject);
begin
  DownloadFailed := True;
  idpReportError; //calling idpReportError in main thread for compatibility with VCL Styles for IS
end;

Будет выход без подтверждения с прекращением загрузки, если пользователь Отмена нажмёт или окно попытается закрыть.
Цитата lmiol:
2 Идёт окно Downloading вызываемое IDP, отключаем wifi, в появившемся модальном окне где говорят "интернет пропал" и спрашивают "Повторить или Отмена?" нажимаем Отмена
Вместо того чтобы прервать загрузку он пытается дальше выполнить установку и создает ярлыки »
lmiol, неправда, при Отмена вызывается тот же код idpCancelButtonClick из idp.iss, но теперь тут модальное окно создаётся из библиотеки и закачка не продолжается.
Цитата lmiol:
Мне кажется El Sanchez просто было лень вникать в то, что я написал и он просто решил сделать по-быстрому, так как уже где-то реализовывал. »
lmiol, я не использую новые версии Inno и их фишки, пример писал впервые, да и не любитель я сторонние библиотеки использовать.
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:38, 18-02-2022 | #747


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


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

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


Цитата El Sanchez:
lmiol, неправда. Если успели нажать Yes до того, как загрузка закончилась, то работает idpCancelButtonClick из idp.iss. А если разглядывать модальное окно и долго решать остановить загрузку или нет, то сама загрузка идёт дальше, и вот всё скачалось, ошибок нет и идёт дальше по сценарию, распаковка, ярлыки и прочее. Паузу автор не предусмотрел. Лучше в idp.iss участок кода с idpCancelButtonClick перепишите на: »
Спасибо конечно, но это просто без подтверждения закрытие. А это не совсем юзерфрендли.
Но я полностью согласен что во время модального окна с подтверждением должна быть пауза.
У нативного загрузчика эта пауза есть.
Но тут мы посчитали эту проблему низкоприоритетной. Если не успеет нажать значит сам виноват
Ну т.е. кейс когда он жмёт закрыть и намеренно уходит очень низок. (но конечно будет). Ведь если кто-то не хочет чтобы ему что-то устанавливалось - он не будет ждать с моря погоды. Но повторюсь что такой кейс возможен (отвлекли например).
Есть еще кейс если долго ждать загрузку и в конце нажать на Крестик (или эта отмена сделана в конце уже почти загуженного файла) то да, второй кейс когда всё упущено.

UPDATE
Кстати я потестировал еще раз
у нас пауза делается сама на Download от IDP
а на installation который у нас идёт секунды 2 уже крестика нет и прервать установку уже нельзя
так что всё просто magnifique

Последний раз редактировалось lmiol, 19-02-2022 в 11:16.


Отправлено: 11:05, 19-02-2022 | #748


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


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

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


Парни подскажите как сделать, что бы не было видно ошибок при переустановки программы.
Скрытый текст

Отправлено: 15:20, 09-03-2022 | #749


Аватара для Vanadiy777

Ветеран


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

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


Цитата pollipen:
Парни подскажите как сделать, что бы не было видно ошибок при переустановки программы. »
pollipen, не совсем понятно, какие ошибки имеются ввиду?

Отправлено: 18:25, 10-03-2022 | #750



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 7] El Sanchez Автоматическая установка приложений 2499 02-02-2015 08:59
Скрипты Inno Setup. Помощь и советы [часть 6] El Sanchez Автоматическая установка приложений 2494 10-03-2014 11:51
Скрипты Inno Setup. Помощь и советы [часть 5] El Sanchez Автоматическая установка приложений 1999 28-03-2013 19:09
Скрипты Inno Setup. Помощь и советы [часть 4] El Sanchez Автоматическая установка приложений 2099 22-05-2012 23:16
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58




 
Переход