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

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

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

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

Ветеран


Contributor


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


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

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


Изменения
Автор: Vadikan
Дата: 22-05-2012
Описание: Закрыто
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
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] - Скачать;


Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:
Inno Setup [все вопросы] часть 1
Inno Setup [все вопросы] часть 2
Скрипты Inno Setup. Помощь и советы [часть 3]


Продолжение обсуждения
Скрипты Inno Setup. Помощь и советы [часть 5]

Отправлено: 18:01, 29-08-2011

 

Аватара для alert30

Ветеран


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

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


rasim933, пока еще не понимаем, каким способом сжать установщик > 30 %. Сейчас подумаю...

Отправлено: 18:03, 29-03-2012 | #1341



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

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


Аватара для Johny777

Ветеран


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

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


Ivan_009,Что случилось?
Ваня!
Родимый!
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Цитата Ivan_009:
А то я подключаю 12 модулей »
вот почему модули не использую
в одном скрипте при компиляции и отладке он проблемные строки посвечивает, а в модуле нет.
Модуль хорош, когда у тебя много сообщений и они готовы.
Или секция файлов полностью готова.
Убрал из скрипта и перематывать меньше!
.,......................................................
rasim933,
инсталл в инсталле?

Последний раз редактировалось Johny777, 29-03-2012 в 19:21.


Отправлено: 19:12, 29-03-2012 | #1342


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


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

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


В этом то и прикол. Инстал в инстале неустраивает меня. А другого способоба я незнаю. Вот у вас и спрашиваю..

МНе не обязательно перезжать игру, мне необходимо её разбить на много частей. Если я начинаю разбивать игру, то получается инсталл в инсталле.

Отправлено: 19:32, 29-03-2012 | #1343


Аватара для Johny777

Ветеран


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

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


ну так перепакуй
или ты знаешь как разбить готовый инсталл?
Я нет
И скажи
зачем тебе его разбивать?

Отправлено: 20:15, 29-03-2012 | #1344


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


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

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


Цитата Johny777:
или ты знаешь как разбить готовый инсталл? »
Готовый инсталл, только если в архив пихнуть. Но это нето.

Цитата Johny777:
ну так перепакуй »
Я знаю, что игру сначала надо установить, потом все файлы из папки с установленной игрой запихать в инно, потом ключи реестра доста (мне неизвестен способ достования и поиска ключей реестра), и запокавать. Возжно что я ошибаюсь.

Цитата Johny777:
зачем тебе его разбивать? »
Затем, что эта игра на 1,75 гб, непомещяется на 4-ёх дисках. В 1 диске остаётся 810 мегабайт свободного места, во 2 - 100 мб, в 3 - 510 мб, в 4 - 310 мб. Вот я и хочу разбить игру, чтоб запихать половинки на диски со свободным местом.

Скрин:.

Предоставить вам скрины с размерами игр?



P.S. - Я извиняюсь за причинённые неприятности, но без вашей помощи я несправлюсь сам.

Отправлено: 20:47, 29-03-2012 | #1345


Аватара для Johny777

Ветеран


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

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


Цитата rasim933:
Я знаю, что игру сначала надо установить, потом все файлы из папки с установленной игрой запихать в инно, потом ключи реестра доста (мне неизвестен способ достования и поиска ключей реестра), и запокавать. Возжно что я ошибаюсь. »
для начала
если игра запакована в инно, то используй инно анпакер (есть в комплекте Inno Ultra) и нет, то ключи доставай сам.
Цитата rasim933:
но без вашей помощи я несправлюсь сам. »
ну проблем нет. Чем смогу помогу.
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,\
и кстати. Есть такая штука. Называется overburn, которая доступна например в ImageBurn
позволяет записать больше чем дозволено.

Отправлено: 23:25, 29-03-2012 | #1346


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


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

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


ОК. Попробую.

Отправлено: 12:21, 30-03-2012 | #1347


Аватара для Johny777

Ветеран


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

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


Подскажите пожалуйста
на выкатывающейся панели разместил InfoBeforeMemo
в нём находятся параметры консоли.
Как активировать копирование.
Т.е. выделяешь нужную команду, правой кнопкой - "копировать" и потом вставить в эдит
вот наглядный пример

пока что работает только через связку ctrl+c и shift+insert.
если это слишком сложно реализовать, то не надо, т.к. это не самое важное

Последний раз редактировалось Johny777, 30-03-2012 в 15:31.


Отправлено: 14:48, 30-03-2012 | #1348


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

Ветеран


Contributor


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

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


Цитата Johny777:
Как активировать копирование »
Johny777, забыл, что ли, как в авторане я тебе делал?
Код: Выделить весь код
[code]
var
    PopMenu: TPopupMenu;
    Menu: TMenuItem;

procedure MenuOnClick(Sender: TObject);
begin
    WizardForm.InfoBeforeMemo.CopyToClipboard;
end;
    
procedure InitializeWizard();
begin
    PopMenu := TPopupMenu.Create(WizardForm);
    Menu := TMenuItem.Create(WizardForm);
    Menu.Caption := 'Копировать';
    Menu.OnClick := @MenuOnClick;
    PopMenu.Items.Add(Menu);
    WizardForm.InfoBeforeMemo.PopupMenu := PopMenu;
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:38, 30-03-2012 | #1349


Аватара для Johny777

Ветеран


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

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


Спасибо! Теперь как в консоли самой игры и очень удобно!
Цитата El Sanchez:
забыл, что ли, как в авторане я тебе делал? »
никак нет! Его я проштудировал и многое реализовал. В том числе перенёс деинсталятор на ту же форму.
а про всплывающее меню даже не подумал, тк там при нажатии на кнопку (это теперь я тоже могу (спасибо ещё раз! )).

Кстати. Деинсталятор с выбором компонентов ещё доработал и полностью перенёс в код
может кому-то пригодится!
вот пример.
читать дальше »

это в основной скрипт

читать дальше »
Код: Выделить весь код
[Setup]
UninstallFilesDir={app}\uninstall
/// привык держать деинсталятор в отдельной папке

[Files]
/// наш заранее скомпилированный деинсталятор пакуется вместе с файлами основного инсталятора
Source: uninstall\Setup\Uninstall.exe; DestDir: {app}\uninstall; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension;

[UninstallDelete]
/// удаление приложени нацелено на удаление всей папки!
Type: filesandordirs; Name: {app}

 [code] 
procedure CurPageChanged(CurPageID: Integer);  /// при смене страниц
begin
    if CurPageID=wpInstalling then  /// страница установки 
/// столкнулся с проблемой. Если установить с действиями на станице завершения без действий строкой ниже и потом
/// установить ещё раз поверх, то второй раз из списка удаления программ вызывается уже не форма с выбором компонентов, 
///а простой стандартный стиратель с вопросом "Удалть? Да и Нет"
// поэтому при повторной установке в ту же директорию проверяем есть ли там деинсталяторы и стираем их, если они есть
/// родной создаётся заново, а наш, в виде формы, копируется и (описание ниже)
      begin
        if FileExists(ExpandConstant('{app}\uninstall\unins000.exe')) then
        DeleteFile(ExpandConstant('{app}\uninstall\unins000.exe'));
        if FileExists(ExpandConstant('{app}\uninstall\unins007.dat')) then
        DeleteFile(ExpandConstant('{app}\uninstall\unins007.dat'));
        if FileExists(ExpandConstant('{app}\uninstall\unins007.exe')) then
        DeleteFile(ExpandConstant('{app}\uninstall\unins007.exe'));
      end;
    if CurPageID=wpFinished then /// завершающая страница
      begin
/// переименовываем созданный автоматом родной деинсталятор в например unins007.exe и unins007.dat
        if FileExists(ExpandConstant('{app}\uninstall\unins000.exe')) then
        RenameFile(ExpandConstant('{app}\uninstall\unins000.exe'), ExpandConstant('{app}\uninstall\unins007.exe'))
        if FileExists(ExpandConstant('{app}\uninstall\unins000.dat')) then
        RenameFile(ExpandConstant('{app}\uninstall\unins000.dat'), ExpandConstant('{app}\uninstall\unins007.dat'))
///теперь переименовываем наш деинсталятор в родное название (см выше) unins000.exe
        if FileExists(ExpandConstant('{app}\uninstall\Uninstall.exe')) then
        RenameFile(ExpandConstant('{app}\uninstall\Uninstall.exe'), ExpandConstant('{app}\uninstall\unins000.exe'))
     end;
end;

сам деинсталятор но в отличии от старого в виде формы
читать дальше »
Код: Выделить весь код
#define MyAppName "Uninstall"

[Setup]
#define MyAppName "Uninstall"

[Setup]
AppId=proto15
SourceDir=.
OutputDir=Setup
AppName={#MyAppName}
AppVerName={#MyAppName}
AppVersion={#MyAppName}
CreateAppDir=false
OutputBaseFilename={#MyAppName}
Uninstallable=false
//SetupIconFile=hl2.ico
//BitmapResource=bgnd:orangebox.bmp
ShowLanguageDialog=auto
LanguageDetectionMethod=uilanguage
UsePreviousLanguage=no


[CustomMessages]
ru.Uninstall=удалить
en.Uninstall=Uninstall

ru.Exit=выход
en.Exit=Exit

[Languages]
Name: ru; MessagesFile: compiler:Languages\Russian.isl
Name: en; MessagesFile: compiler:Languages\English.isl

[Files]
Source: ISSkin.dll; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: steam.cjstyles; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression

[  Code]
procedure LoadSkin(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@files:isskin.dll stdcall';
procedure UnloadSkin(); external 'UnloadSkin@files:isskin.dll stdcall';
/// тень окна /// начало
function GetWindowLong(Wnd: HWnd; Index: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall';
function SetClassLong(hWnd: HWND; Index, NewLong: Longint): Longint; external 'SetClassLongA@user32 stdcall';
/// конец

////////////////////////////////////////////////////////////////////////
var
    AutoRun: TForm;
    ExitButton, UninstallButton: TButton;
    ResultCode: Integer;
    hl2_Checkbox, ep1_Checkbox, ep2_Checkbox, portal_Checkbox: TCheckBox;
//////////////////////////////////////////////////

function Check_hl2: Boolean; begin Result:=hl2_Checkbox.Checked; end;
function Check_ep1: Boolean; begin Result:=ep1_Checkbox.Checked; end;
function Check_ep2: Boolean; begin Result:=ep2_Checkbox.Checked; end;
function Check_portal: Boolean; begin Result:=portal_Checkbox.Checked; end;

/////////////////////////////////////////////////////////////////////

procedure Unstall(Sender: TObject); /// выполняется сверху вниз
begin
///  сначало удаляются эксклюзивные файлы и папки для кждого компонента, если
  begin
    if hl2_Checkbox.Checked = true then  /// чекбокс этого компонента отмечен, то
      begin  /// начало удаления
        DelTree(ExpandConstant('{src}\..\common\half-life 2'), True, True, True) // трём папку
        DeleteFile(ExpandConstant('{src}\..\half-life 2 buka russian.gcf'));
        DeleteFile(ExpandConstant('{src}\..\half-life 2 2007 base content.gcf'));
        DeleteFile(ExpandConstant('{src}\..\half-life 2 content.gcf'));
        DeleteFile(ExpandConstant('{src}\..\half-life 2 game dialog.gcf'));
        DeleteFile(ExpandConstant('{commondesktop}\Half-Life 2.lnk'));  /// удаляем ярлык
      end // конец
  end;
  
  begin
    if ep1_Checkbox.Checked = true then
      begin
        DelTree(ExpandConstant('{src}\..\common\half-life 2 episode one'), True, True, True)
        DeleteFile(ExpandConstant('{src}\..\episode one 2007 content.gcf'));
        DeleteFile(ExpandConstant('{src}\..\half-life 2 episode one.gcf'));
        DeleteFile(ExpandConstant('{commondesktop}\Half-Life 2 Episode One.lnk'));
      end
  end;

  begin
    if ep2_Checkbox.Checked = true then
      begin
        DelTree(ExpandConstant('{src}\..\common\half-life 2 episode two'), True, True, True)
        DeleteFile(ExpandConstant('{src}\..\episode two content.gcf'));
        DeleteFile(ExpandConstant('{src}\..\episode two maps.gcf'));
        DeleteFile(ExpandConstant('{src}\..\episode two materials.gcf'));
        DeleteFile(ExpandConstant('{src}\..\half-life 2 episode two english.gcf'));
        DeleteFile(ExpandConstant('{src}\..\half-life 2 episode two russian.gcf'));
        DeleteFile(ExpandConstant('{commondesktop}\Half-Life 2 Episode Two.lnk'));
      end
  end;

  begin
    if portal_Checkbox.Checked = true then
      begin
        DelTree(ExpandConstant('{src}\..\common\portal'), True, True, True)
        DeleteFile(ExpandConstant('{src}\..\portal content.gcf'));
        DeleteFile(ExpandConstant('{src}\..\portal english.gcf'));
        DeleteFile(ExpandConstant('{src}\..\portal russian.gcf'));
        DeleteFile(ExpandConstant('{commondesktop}\Portal.lnk'));
      end
  end;
  //// конец первой части. Действие идёт дальше после верхнего удаления. Даже если удаления не было и кто-то просто нажал кнопку "Удалить" ничего не произойдёт, тк
    begin  /// начинается вторая проверка полуэксклюзивных файлов, те файлов относящихся к 2 из 3 из 4 имеющихся (здесь) коммпонентов. Например half-life 2 episode one russian.gcf
      begin /// часть озвучки которого используется во втором эпизоде и вся в первом.
        if (FileSearch('hl2.exe', ExpandConstant('{src}\..\common\half-life 2 episode one'))='') and  /// если этого компонента нет
           (FileSearch('hl2.exe', ExpandConstant('{src}\..\common\half-life 2 episode two'))='')  //// и этого тоже, то
        then /// удаляем общие для них (и только для них) файлы
        DeleteFile(ExpandConstant('{src}\..\episode 1 shared.gcf'));
        DeleteFile(ExpandConstant('{src}\..\episodic 2007 shared.gcf'));
        DeleteFile(ExpandConstant('{src}\..\half-life 2 episode one russian.gcf'));
      end
      begin  /// а это проверка для удаления файла half-life 2_russian.gcf, ресурсы которго в той или иной степени нужнв всем hl2 в той или иной мере
     /// Напимер
        If (FileSearch('hl2.exe', ExpandConstant('{src}\..\common\half-life 2'))='') and  // проверка раз  --- нету
           (FileSearch('hl2.exe', ExpandConstant('{src}\..\common\half-life 2 episode one'))='') and /// два  --- нету
           (FileSearch('hl2.exe', ExpandConstant('{src}\..\common\half-life 2 episode two'))='')  /// три --- есть. Файл не стирается
        then
        DeleteFile(ExpandConstant('{src}\..\half-life 2_russian.gcf'));
      end
      //// конец второй проверки
      /// начало 3 -й. 
/// А теперь главное. Идёт такая же проверка как и сверху но ведётся поиск всех компонентов и если нет ни одного компонента (уникального файла, подтверждающего наличие компонента), то
/// выпоняется родное удаление в очень тихом режиме и удаляется вся папка. Разберём пример. При инициализации деинсталятор "видит" 2 компонента - hl2 и портал.
/// При удалении только портала удаляется всё уникальное от портала (выше), но hl2 и общие файлы остаются, тут же доходит до дейстий кода ниже. Идёт третья проверка,
/// но не нацеленная не на создание чекбокса, а на проверку есть ли хоть один компонент и он есть - это hl2. Вызываем деинстаятор ещё раз и видим в списке только hl2.
/// Удаляем и снова доходит до третьей проверки. Он не видит не одного hl2.exe в разных директория, и вызывает другой деинсталятор, который трёт всё.
        If (FileSearch('hl2.exe', ExpandConstant('{src}\..\common\half-life 2'))='') and
           (FileSearch('hl2.exe', ExpandConstant('{src}\..\common\half-life 2 episode one'))='') and
           (FileSearch('hl2.exe', ExpandConstant('{src}\..\common\half-life 2 episode two'))='') and
           (FileSearch('hl2.exe', ExpandConstant('{src}\..\common\portal'))='')
        then
      Exec(ExpandConstant('{src}\unins007.exe'),'/VERYSILENT','', SW_SHOW, ewNoWait, ResultCode); /// запускаем родной деинсталятор в очень тихом режиме. 
    end;
  AutoRun.Close;
end;

///////////////////////////////////////////////////////////


procedure CreateAutoRun();
begin
    //AutoRun
    AutoRun := TForm.Create(nil);
    with AutoRun do
    begin
        BorderIcons := [];
        SetClassLong(AutoRun.Handle, (-26), GetWindowLong(AutoRun.Handle, (-26)) or $00020000); //тень окна
        Position := poScreenCenter;
        Caption := 'Uninstall';
        ClientWidth := ScaleX(256);
        ClientHeight := ScaleY(350);
    end;
/////////////////// чекбоксы /// начало
/// создание чекбоксов. По одному на компонент.
    begin
        begin
        hl2_Checkbox := TCheckBox.Create(AutoRun);
          with hl2_Checkbox do
          begin
            Parent := AutoRun;
            Caption := 'half-life 2';
            Left := ScaleX(40);
            Top := ScaleY(20);
            Width := ScaleX(200);
            Height := ScaleY(15);
            Checked := False;
          end;
        end;

        begin
        ep1_Checkbox := TCheckBox.Create(AutoRun);
          with ep1_Checkbox do
          begin
            Parent := AutoRun;
            Caption := 'half-life 2 episode one';
            SetBounds(hl2_Checkbox.Left, hl2_Checkbox.Top + ScaleY(30), ScaleX(200), ScaleY(15));
            Checked := False;
          end;
        end;

        begin
        ep2_Checkbox := TCheckBox.Create(AutoRun);
          with ep2_Checkbox do
          begin
            Parent := AutoRun;
            Caption := 'half-life 2 episode two';
            SetBounds(ep1_Checkbox.Left, ep1_Checkbox.Top + ScaleY(30), ScaleX(200), ScaleY(15));
            Checked := False;
          end;
        end;

        begin
        portal_Checkbox := TCheckBox.Create(AutoRun);
          with portal_Checkbox do
          begin
            Parent := AutoRun;
            Caption := 'portal';
            SetBounds(ep2_Checkbox.Left, ep2_Checkbox.Top + ScaleY(30), ScaleX(200), ScaleY(15));
            Checked := False;
          end;
        end;
    end;
/////////// конец создания чекбоксов. Нихе начинается кусок (procedure CreateAutoRun()) в котором проверяется наличие компонента. Для проверки наличия компонента.
// необходии хотя бы один уникальный файл. Правда здесь в примере идёт поиск одного и того же hl2.exe вразных директориях
// Пример>
// если файл существует здесть (\..\- поднимаемся на уровень выше), то
If FileExists(ExpandConstant('{src}\..\common\half-life 2\hl2.exe')) then   /// Half-Life 2
  begin
  /// чекбоксы этого включен (можно добавить видим/невидим )
    hl2_Checkbox.Enabled:= true;
  end
else /// в противном случае
  begin
    hl2_Checkbox.Enabled:= false;  /// выключен
  end;
///////////
If FileExists(ExpandConstant('{src}\..\common\half-life 2 episode one\hl2.exe')) then  /// Half-Life 2 Episode One
  begin
    ep1_Checkbox.Enabled:= true;
  end
else
  begin
    ep1_Checkbox.Enabled:= false;
  end;
///////////
If FileExists(ExpandConstant('{src}\..\common\half-life 2 episode two\hl2.exe')) then   /// Half-Life 2 Episode Two
  begin
    ep2_Checkbox.Enabled:= true;
  end
else
  begin
    ep2_Checkbox.Enabled:= false;
  end;
///////////
If FileExists(ExpandConstant('{src}\..\common\portal\hl2.exe')) then   /// Portal
  begin
    portal_Checkbox.Enabled:= true;
  end
else
  begin
    portal_Checkbox.Enabled:= false;
  end;
/// конец проверки

  AutoRun.Repaint;

/////////////////// кнопки /// начало
    ///кнопка "Удалить"
    UninstallButton := TButton.Create(AutoRun);
    with UninstallButton do
    begin
        Parent := AutoRun;
        Left := ScaleX(50);
        Top := ScaleY(265);
        Width := ScaleX(90);
        Height := ScaleY(22);
        Cursor := crHand;
        Caption := ExpandConstant('{cm:Uninstall}');
        OnClick := @Unstall; ///при нажатии выполниется удаление
    end;
    /// кнопка выход
    ExitButton := TButton.Create(AutoRun);
    with ExitButton do
    begin
        Parent := AutoRun;
        Left := ScaleX(150);
        Top := ScaleY(265);
        Width := ScaleX(50);
        Height := ScaleY(22);
        Caption := ExpandConstant('{cm:Exit}');
        Cursor := crHand;
        ModalResult := mrCancel;
    end;
/// конец

  AutoRun.ShowModal;
end;

function InitializeSetup(): Boolean;
begin
    ExtractTemporaryFile('steam.cjstyles');
    LoadSkin(ExpandConstant('{tmp}\steam.cjstyles'), '');
    CreateAutoRun();
    Result := False;
end;

procedure DeinitializeSetup;
begin
    AutoRun.Hide;
    UnloadSkin();
end;

проверено
работает как ядерные часы


Последний раз редактировалось Johny777, 30-03-2012 в 19:52.

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

Отправлено: 17:04, 30-03-2012 | #1350



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Test ferget Тест-форум 0 24-08-2011 01:25
test ! ! Aaa ! ! Тест-форум 0 23-04-2011 11:29
test Santa aka Snt Тест-форум 0 16-04-2011 22:35
test xolod. Программное обеспечение Linux и FreeBSD 0 19-04-2009 21:03
Test memory KEugeNik Хочу все знать 11 23-11-2003 23:11




 
Переход