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

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

Закрытая тема
Настройки темы
[архив] Inno Setup .:[все вопросы]:.

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


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

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


Изменения
Автор: volk1234
Дата: 27-08-2009
Описание: перевел в архив
Лимит страниц.
Тема закрыта.
продолжаем тут:

Inno Setup. Обсуждение установщика

Скрипты Inno Setup. Помощь и советы



Полезные ресурсы:
Официальный сайт| Inno Setup 5.2.3 RU
Русская справка |Зеракало 1| Зеракало 2
ISTool 5.30 |Русификатор
Русификатор ISTool |Зеркало 1|Зеркало 2
Inno Setup Script Generator |Зеркало 1
Unpaker 2.1 от 21.04.2009 - распаковывает инсталляторы, созданные с помощью Inno Setup, начиная с версии 2.0.18 по 5.2.4.
InnoUnpaker 2.6b3 [от valeron87]- можнет просмотривать содержание CompiledCode.bin
Unpaker 0.23 - расширенная китайская версия 2008-08-08 ( модификация)
Unpacker 0.24 | Зеркало 1 | Зеркало 2 - Inno Setup Unpacker (innounp plus) - расширенная версия распаковщика инсталляторов Inno Setup начиная с версии 2.0.8 по 5.3.0 Beta. Поддерживаются версии Unicode. Русифицирована. Последний релиз: 0.24 [23.05.2009]
Набор Restools
Restools - расширенная версия Inno Setup от китайских разработчиков, добавляет вашему инсталлятору новые возможности по оформлению, а также более удобный редактор скриптов (требуется наличие установленного Preprocessor'а).
Последние версии разработок от Restools:
InnoCompiler090319_English - в него входят файлы: Compil32.exe и Templates.dat;
Inno_ISCmplr_Setup090302 - в него входят файлы, лучше из папки InnoSetup_FullVCL: setup.e32, ISCmplr.dls, ISCmplr.dll и SetupLdr.e32.
InnoCompiler090319_Russian - Русский перевод (80%) от tem000 - NEW !

QuickStart Pack - Inno Setup + Preprocessor (последняя версия ispack-5.2.4-dev)
"Всё в одном" от unikum111
читать дальше »

Цитата unikum111:
В сборку входят следующие компоненты:
Inno Setup compiler 5.2.2 русская версия;
ISTool 5.2.1 русская версия;
Inno Script Generator английская версия;
Inno Setup Unpacker Explorer 1.0 аглийская версия;
Примечание: в Inno Setup Unpacker Explorer 1.0 заменён innounp.exe на тестовую версию 2.0, так что распаковывает инсталляторы вплоть до версии 5.2.2.
Есть возможность выбора компонентов.
Скачать: ifolder, RapidShare, iBox (Размер: 5.34 Mb).»



Полезные мелочи для Inno Setup:

- Converter v.0.1.2 - конвертор REG- файлов в формат скриптов Inno от Serega_ -новая версия
- Как убрать страницу приветствия (wpWelcome) в мастере установки приложения:
- Примеры скриптов на паскале
- Inno Setup Addon 0.07 For Total Commander
- Параметры командной строки инсталляторов InnoSetup:

Код: Выделить весь код
/SP-
Отключает страницу "Эта программа установит... Вы хотите продолжить?" инсталятора. 
Выполнится только если DisableStartupPrompt секции [Setup] равна yes. 

/SILENT, /VERYSILENT  
Установка в ускоренном или очень ускоренном режиме. При установке в ускоренном режиме 
окно мастера и фоновое окно мастера не отображаются, отображается только окно прогресса. 
При очень ускоренной установке окно прогресса тоже не отображается. Остальная установка 
проходит как обычно - отображаются сообщения об ошибках в ходе установки, страница 
приветствия (если ее отображение не отменено директивой DisableStartupPrompt или 
параметром '/SP-' командной строки).

Если после установки необходима перезагрузка, команды '/NORESTART' не дано и установка 
проходит в ускоренном режиме, появится сообщение "Перезагрузить компьютер?". Если режим 
установки очень ускоренный, система перезагрузится не спрашивая.

/LOG 
Указывает инсталятору создать log-файл в папке TEMP для подробного отчета о действиях 
и событиях в секции [Run], предпринятых в ходе установки. Применяется при отслеживании 
ошибок. Например, если вы подозреваете, что файл не был удален, хотя должен был, 
log-файл сообщит, что файл былдействительно пропущен и почему. 

log-файлу присваивается уникальное имя на базе текущей даты. (Существующие файлы не 
перезаписываются и не дополняются). 
Информация, содержащаяся в log-файле, техническая и поэтому не может быть понята 
пользователем. 

/LOG="filename" 
Параметр похож на /LOG, но в отличие от него позволяет указать фиксированный
путь/имя файла для log-файла. Если файл с указанным именем уже существует, он будет 
заменен. Если файл не может быть создан, установка прервется и выдаст сообщение 
об ошибке.

/NOCANCEL  
Не дает пользователю прервать установку, отключая кнопку Отменить и игнорируя клики на 
кнопке Закрыть. Используется в комбинации с '/SILENT' или '/VERYSILENT'. 

/NORESTART 
Указывает инсталятору не перезагружать компьютер даже если это необходимо. 

/RESTARTEXITCODE=exit code  
Задает инсталятору код, который он должен возвратить, если необходима перезагрузка. 
Используется с '/NORESTART'.
См. также Коды выхода инсталятора. (кому интерестно, могу выложить или же доступно в хелпе)

/LOADINF="filename" 
Указывает инсталятору загрузить параметры установки из указанного файла после проверки 
командной строки. Этот файл может быть подготовлен с помощью '/SAVEINF='command.
Не забудьте ставить кавычки при использовании имен, содержащих пробелы. 

/SAVEINF="filename" 
Указывает инсталятору сохранять параметры установки в указанный файл.
Не забудьте ставить кавычки при использовании имен, содержащих пробелы. 

/LANG=language 
Задает используемый язык. language задает имя языка, заданного в параметре секции 
[Languages]. При использовании параметра /LANG появляется диалог Выбор языка установки.

/DIR="x:\dirname" 
Меняет имя папки, заданное по умолчанию, на странице Выбор папки назначения. 
Должен быть задан полный путь. 

/GROUP="folder name" 
Меняет имя папки на странице Выбор папки меню Пуск. Если директива 
DisableProgramGroupPage секции [Setup] равна yes, этот параметр командной строки 
игнорируется. 

/NOICONS 
Указывает инсталятору проверять, выбрана ли команда Не создавать значков на странице 
Выбор папки меню Пуск. 

/COMPONENTS="comma separated list of component names" 
Меняет выбраные по умолчанию компоненты. В этом случае параметр командной строки 
указывает инсталятору менять тип установки на Выборочный. 

/PASSWORD=password  Задает пароль. Если не указана директива Password секции [Setup], 
этот параметр игнорируется. Если введен неправильный пароль, параметр 
также игнорируется.

Отправлено: 21:42, 17-03-2005

 

Аватара для Rosich

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


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

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


Подскажите, пожалуйста, как сделать так чтобы перед началом повторной установки программы сначала запускался деинсталлятор в тихом режиме, а затем уже шел сам процесс установки. Пробовал сделать все это через секцию [InstallDelete], но первое, что неудобно постоянно выскакивает предупреждение, что такие-то компоненты будут удалены, а их у меня – экрана не хватит. Пробовал и без секции [InstallDelete], эффект почти тот же самый, только с разницей, что компоненты не будут удалены.
И самое главное, мой инсталлятор делает бекап файлов и к моменту повторного запуска инсталлятора эти файлы должны быть на своих местах, такое через секцию [InstallDelete] никакими средствами не добиться. Голову сломал, а как сделать - не знаю!
Вот мой код.
P.S.
Хотел дать весь код в топике, но при отправке сообщения, ругается, что много символов, пришлось сократить до секции [Code], а затем и полностью на ифолдер перенести.

Отправлено: 13:22, 31-07-2009 | #1181



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

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


Ветеран


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

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


Цитата Drongo:
Так тож я ничего не правил, как было. »
бывает...

Цитата x-net:
Подскажите пожалуйста как такой инсталл сделать, чтоб было такое оформление »
Здесь использовано скинирование - ISSkin, плюс все компоненты переписаны заново.
Цитата x-net:
и были функции удалений сохраненй и игр? »
не поленитесь, почитайте где-то страниц тридцать назад, я приводил пример скрипта с удалением сохранений.
Цитата x-net:
я вытаскивал код, скомпилировал, а картинка сужается. »
Покажите скрипт, так тяжело сказать где поправить.
Цитата user_123:
1. В программе удаления сделать список дополнительных задач (как [tasks] в программе установки; нужно для удаления определённого каталога со все его содержимым) . Показ стандартного (системного) диалога с запросом меня не очень устраивает, т.к. я делаю многоязычный инсталлятор, а в секции [code] {cm:*} не работает... »
Покажите пример, как делаете.
Цитата user_123:
2. На черточке внизу диалогового окна написать текст (копирайт). »
Пример
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Messages]
BeveledLabel=forum OSzone.net

[Code]
procedure InitializeWizard;
begin
  WizardForm.BeveledLabel.Left:= 20;
end;


Цитата user_123:
3. Во всех диалоговых окнах инсталлятора и деинсталлятора (кроме заголовка окна) сделать отображаение AppVerName вместо AppName. »
Не совсем понятен вопрос, но насколько я понял напишите в скрипте соответственно AppName равным AppVerName и тогда обязательно используйте AppId.

Цитата Drongo:
Или прокатит и предыдущая запись? »
Ну а куда она родимая денется, обязательно прокатит...
Цитата из Справки:
Pos(subs,s) - возвращает позицию первой подстроки subs в строке s (или 0 если подстрока не найдена)
Цитата A1EXXX:
вот только я не знаю, что писать вместо того, что я выделил.... »
Вы скрипт покажите, проще будет общаться, а то на пальцах тяжело объяснять.

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

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

Отправлено: 20:17, 31-07-2009 | #1182


Аватара для A1EXXX

Старожил


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

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


вот мой скрипт...
читать дальше »

[code]
var
LogoImage:TBitmapImage;
LogoLabel: TLabel;
LogoPanel: TPanel;

procedure LogoOnClick(Sender: TObject);
var ReturnCode: Integer;
begin
ShellExec('open', 'http://......', '', '', SW_SHOWNORMAL, ewNoWait, ReturnCode)
end;

procedure InitializeWizard();
begin
ExtractTemporaryFile('logo.bmp');
LogoPanel := TPanel.Create(WizardForm);
with LogoPanel do
begin
Parent := WizardForm;
Left := ScaleX(5);
Top := ScaleY(320);
Width := ScaleX(165);
Height := ScaleY(35);
BevelOuter := bvNone;
end;

LogoImage := TBitmapImage.Create(WizardForm);
with LogoImage do
begin
Parent := LogoPanel;
Left := ScaleX(0);
Top := ScaleY(0);
AutoSize:=true;
ReplaceColor:=clFuchsia;
ReplaceWithColor:=clBtnFace;
Bitmap.LoadFromFile(ExpandConstant('{tmp}\logo.bmp'));
end;

LogoLabel := TLabel.Create(WizardForm);
with LogoLabel do
begin
Parent := LogoPanel;
Width := LogoPanel.Width;
Height := LogoPanel.Height;
Transparent:=True;
Cursor := crHand;
OnClick:=@LogoOnClick;
end;
end;

[Files]
Source: C:\logo.bmp; DestDir: {tmp}; Flags: dontcopy

Отправлено: 20:35, 31-07-2009 | #1183


Аватара для Drongo

Будем жить, Маэстро...


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

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


Цитата Serega:
Pos(subs,s) - возвращает позицию первой подстроки subs в строке s (или 0 если подстрока не найдена) »
Ааа, понял, функция для работы со строками. Спасибо.

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 21:16, 31-07-2009 | #1184


Ветеран


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

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


Цитата Rosich:
чтобы перед началом повторной установки программы сначала запускался деинсталлятор в тихом режиме, а затем уже шел сам процесс установки. »
Пример
Код: Выделить весь код
[Setup]
AppID={{C05D8CDB-417D-4335-A38C-A0659EDFD6B8}
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Code]
//проверка устанавливалась ли программа ранее
var
  Error: Integer;
  ResultStr: String;

function InitializeSetup: Boolean;
begin
  Result := True;
    begin
      if RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C05D8CDB-417D-4335-A38C-A0659EDFD6B8}_is1', 'DisplayName', ResultStr) then
       if ResultStr = 'My Program v 1.5' then
        begin
          if RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C05D8CDB-417D-4335-A38C-A0659EDFD6B8}_is1', 'UninstallString', ResultStr) then
          ResultStr:= RemoveQuotes(ResultStr);
          if not Exec(ResultStr, '/silent', '', SW_SHOWNORMAL, ewWaitUntilTerminated, Error) then
          MsgBox('Ошибка удаления. ' #13#13 '' + SysErrorMessage(Error) + '.' #13#13 'Вероятно, деинсталлятор был перемещен, удален или переименован.', mbError, MB_OK);
        end;
    end;
end;


Цитата A1EXXX:
вот мой скрипт... »
Пример
Код: Выделить весь код
[Code]
var
  LogoImage: TBitmapImage;
  LogoLabel: TLabel;
  LogoPanel: TPanel;

procedure LogoOnClick(Sender: TObject);
var
  ReturnCode: Integer;
begin
  ShellExec('open', 'http://......', '', '', SW_SHOWNORMAL, ewNoWait, ReturnCode)
end;

procedure InitializeWizard();
begin
  ExtractTemporaryFile('logo.bmp');
  LogoPanel := TPanel.Create(WizardForm);
  with LogoPanel do
    begin
      Parent := WizardForm;
      Left := ScaleX(5);
      Top := ScaleY(320);
      Width := ScaleX(165);
      Height := ScaleY(35);
      BevelOuter := bvNone;
    end;

  LogoImage := TBitmapImage.Create(WizardForm);
  with LogoImage do
    begin
      Parent := LogoPanel;
      Left := ScaleX(0);
      Top := ScaleY(0);
      AutoSize:=true;
      ReplaceColor:=clFuchsia;
      ReplaceWithColor:=clBtnFace;
      Bitmap.LoadFromFile(ExpandConstant('{tmp}\logo.bmp'));
    end;

  LogoLabel := TLabel.Create(WizardForm);
  with LogoLabel do
    begin
      Parent := LogoPanel;
      Width := LogoPanel.Width;
      Height := LogoPanel.Height;
      Transparent:=True;
      Cursor := crHand;
      OnClick:=@LogoOnClick;
    end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  LogoPanel.Visible:= True;
  LogoImage.Visible:= True;
  LogoLabel.Visible:= True;
  if CurPageID = wpInstalling then
    begin
      LogoPanel.Visible:= False;
      LogoImage.Visible:= False;
      LogoLabel.Visible:= False;
    end;
end;

[Files]
Source: C:\logo.bmp; DestDir: {tmp}; Flags: dontcopy

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

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

Отправлено: 22:36, 31-07-2009 | #1185


Аватара для Rosich

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


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

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


Serega, ВЫ как всегда на высоте, то, что доктор прописал, лучше и не придумаешь, спасибо большое!!!

Отправлено: 23:23, 31-07-2009 | #1186


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


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

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


Цитата user_123:
Во всех диалоговых окнах инсталлятора и деинсталлятора (кроме заголовка окна) сделать отображаение AppVerName вместо AppName
Проблема заключается в том, что у программы достаточно длинное название и внутри диалоговых окон оно смотрится не очень красиво, а если написать сокращённо, то - в заголоке. Данную проблему я решил так: в секции [Messages] написал полное название для заголока, без "%1", а в appname - сокращённое.
Цитата Serega:
[Messages]
BeveledLabel=forum OSzone.net
[code]
procedure InitializeWizard;
begin
WizardForm.BeveledLabel.Left:= 20;
end; »
Спасибо.
Цитата Serega:
В программе удаления сделать список дополнительных задач (как [tasks] в программе установки; нужно для удаления определённого каталога со все его содержимым) »
В программе установки можно сделать доп. задачи, например, создание ярлыка на рабочем столе / в меню быстрого запуска, добавление доп. ключей в реестр и др... А в программе удаление так сделать (чтобы врезультате уставки флага (галочки) удалился определённый каталог), если я не ошибаюсь, нельзя... Конечно, можно что-то в сецию [code] написать, но... я не знаю высокоуровневых языков программирования... если вижу готовый код, то примерно понимаю, о чём речь идёт, а сам написать не могу...

Отправлено: 23:04, 01-08-2009 | #1187


Аватара для Rosich

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


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

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


Мне на ру-боарде подкинули скрипт
читать дальше »
Код: Выделить весь код
var
  UnInstallPath: String;

function GetUnInstallPath( AppID: String ): String;
begin
  RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C05D8CDB-417D-4335-A38C-A0659EDFD6B8}_is1','UninstallString', UnInstallPath);
  Result := UnInstallPath;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
var
ResultCode:integer;
begin
 Result:=true;
 if CurPageID = wpSelectComponents
  then
  Exec(UnInstallPath, '/VERYSILENT','', sw_Hide, ewWaitUntilTerminated, ResultCode);
end;

Но он, почему то не работает, как должен работать, может, кто посмотрит. Этот скрипт в идеале должен запускать "тихий деинсталлятор", но не сразу при запуске инсталлятора, а после странице выбора компонентов. У меня вопрос к Serega – можно ли сделать такое в твоем скрипте? И еще очень актуальный вопрос, а точнее три вопроса:
1.). Как убрать вот это табличку: , а то у меня компонентов туча, экрана не хватает.
2.). Как правильно срастить вот этот скрипт
читать дальше »
Код: Выделить весь код
procedure ComponentOnClick(Sender: TObject); 
begin 
if WizardSelectedComponents(False) = '' then 
WizardForm.NextButton.Enabled:= False 
else WizardForm.NextButton.Enabled:= True; 
end; 
procedure InitializeWizard(); 
begin 
WizardForm.ComponentsList.OnClick := @ComponentOnClick; 
end;

с моим скриптом.
3.). Мне на том же форуме, в моем скрипте, изменили процедуру CurPageChanged
читать дальше »
Код: Выделить весь код
procedure CurPageChanged(CurPageID: Integer);  
begin  
  PageNameLabel.Caption:= WizardForm.PageNameLabel.Caption;  
  PageDescriptionLabel.Caption:= WizardForm.PageDescriptionLabel.Caption;  
  PageNameLabel1.Caption:= 'Апаратное Обеспечение';  
  PageDescriptionLabel1.Caption:= 'Программа установки обнаружила следуюшие необходимые компоненты';  
  PageNameLabel2.Caption:= WizardForm.PageNameLabel.Caption;  
  PageDescriptionLabel2.Caption:= WizardForm.PageDescriptionLabel.Caption;  
  PageNameLabel3.Caption:= WizardForm.PageNameLabel.Caption;  
  PageDescriptionLabel3.Caption:= WizardForm.PageDescriptionLabel.Caption;  
  PageNameLabel4.Caption:= WizardForm.PageNameLabel.Caption;  
  PageDescriptionLabel4.Caption:= WizardForm.PageDescriptionLabel.Caption;  
  PageNameLabel5.Caption:= WizardForm.PageNameLabel.Caption;  
  PageDescriptionLabel5.Caption:= WizardForm.PageDescriptionLabel.Caption;  
  PageNameLabel6.Caption:= WizardForm.PageNameLabel.Caption;  
  PageDescriptionLabel6.Caption:= WizardForm.PageDescriptionLabel.Caption;  
  PageNameLabel7.Caption:= WizardForm.PageNameLabel.Caption;  
  PageDescriptionLabel7.Caption:= WizardForm.PageDescriptionLabel.Caption;  
  PageNameLabel8.Caption:= WizardForm.PageNameLabel.Caption;  
  PageDescriptionLabel8.Caption:= WizardForm.PageDescriptionLabel.Caption;  
  PageID:=CurPageID;  
  if CurPageID = wpSelectComponents then  
  begin  
  WizardForm.BackButton.Enabled:= false;   
  if CurPageID = wpSelectDir then  
  begin  
    GetNeedSpaceCaption;  
    if FreeMB < NeedSize then  
    WizardForm.NextButton.Enabled:=False;  
      begin  
if CurPageID=wpInstalling  
then  
if CurPageID=wpFinished  
then  
begin  
WizardForm.Width:=497;  
WizardForm.Height:=358;  
WizardForm.Position:=poScreenCenter;  
end  
end;  
end;  
end; 
end;

И теперь кнопка "назад" становиться неактивной на странице выбора компонентов. Вопрос - как мне сделать чтобы кнопка "назад" была неактивна именно вот на этой странице: , то есть на следующей после выбора компонентов?!

P.S.
Забыл сразу написать: у меня для этой игры есть два официальных патча, но установить их можно, только если в игре стоят оригинальные файлы, с которых я делаю бекап. То есть реально установка этих патчей должна начаться сразу после "тихой деинсталляции" до установки основных файлов и только по одному - сначала файл myprogram v. 1.1, после завершения установки этого файла, идет установка файла myprogram v. 1.2 и только после того как установится второй файл должна начаться установка основных файлов.
КАК это сделать?!

Заранее СПАСИБО!!!

Последний раз редактировалось Rosich, 02-08-2009 в 13:26.


Отправлено: 11:34, 02-08-2009 | #1188


Ветеран


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

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


Цитата Rosich:
Но он, почему то не работает, как должен работать, может, кто посмотрит. Этот скрипт в идеале должен запускать "тихий деинсталлятор", но не сразу при запуске инсталлятора, а после странице выбора компонентов. »
Записал в процедуре CurPageChanged, которую привёл ниже...
Цитата Rosich:
Как убрать вот это табличку: »
Добавьте в секции [Components] ко всем компонентам флаг disablenouninstallwarning
Цитата Rosich:
Как правильно срастить вот этот скрипт »
1. Берете вашу процедуру:
Код: Выделить весь код
procedure ComponentOnClick(Sender: TObject);
begin
  if WizardSelectedComponents(False) = '' then
    WizardForm.NextButton.Enabled:= False
  else WizardForm.NextButton.Enabled:= True;
end;
и добавляете её в свой скрипт, в любое место, главное перед процедурой InitializeWizard.
2. Добавляете эту строку:
Код: Выделить весь код
  WizardForm.ComponentsList.OnClick := @ComponentOnClick;
в самое начало процедуры InitializeWizard, после begin.
Цитата Rosich:
Мне на том же форуме, в моем скрипте, изменили процедуру CurPageChanged »
исправил
Код: Выделить весь код
procedure CurPageChanged(CurPageID: Integer);
var
  ResultCode: Integer;
  UnInstallPath: string;
begin
  PageNameLabel.Caption:= WizardForm.PageNameLabel.Caption;
  PageDescriptionLabel.Caption:= WizardForm.PageDescriptionLabel.Caption;
  PageNameLabel1.Caption:= 'Апаратное Обеспечение';
  PageDescriptionLabel1.Caption:= 'Программа установки обнаружила следуюшие необходимые компоненты';
  PageNameLabel2.Caption:= WizardForm.PageNameLabel.Caption;
  PageDescriptionLabel2.Caption:= WizardForm.PageDescriptionLabel.Caption;
  PageNameLabel3.Caption:= WizardForm.PageNameLabel.Caption;
  PageDescriptionLabel3.Caption:= WizardForm.PageDescriptionLabel.Caption;
  PageNameLabel4.Caption:= WizardForm.PageNameLabel.Caption;
  PageDescriptionLabel4.Caption:= WizardForm.PageDescriptionLabel.Caption;
  PageNameLabel5.Caption:= WizardForm.PageNameLabel.Caption;
  PageDescriptionLabel5.Caption:= WizardForm.PageDescriptionLabel.Caption;
  PageNameLabel6.Caption:= WizardForm.PageNameLabel.Caption;
  PageDescriptionLabel6.Caption:= WizardForm.PageDescriptionLabel.Caption;
  PageNameLabel7.Caption:= WizardForm.PageNameLabel.Caption;
  PageDescriptionLabel7.Caption:= WizardForm.PageDescriptionLabel.Caption;
  PageNameLabel8.Caption:= WizardForm.PageNameLabel.Caption;
  PageDescriptionLabel8.Caption:= WizardForm.PageDescriptionLabel.Caption;
  if CurPageID = wpSelectComponents then
    begin
      RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C05D8CDB-417D-4335-A38C-A0659EDFD6B8}_is1','UninstallString', UnInstallPath);
      UnInstallPath:= RemoveQuotes(UnInstallPath);
      Exec(UnInstallPath, '/verysilent','', SW_HIDE, ewWaitUntilTerminated, ResultCode);
    end;
  if CurPageID = wpSelectDir then
    begin
      GetNeedSpaceCaption;
      if FreeMB < NeedSize then
      WizardForm.NextButton.Enabled:= False;
    end;
  if CurPageID = wpReady then
    WizardForm.BackButton.Enabled:= False;
  if CurPageID = wpFinished then
    begin
      WizardForm.Width:= 497;
      WizardForm.Height:= 358;
      WizardForm.Position:= poScreenCenter;
    end
end;

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

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

Отправлено: 14:05, 02-08-2009 | #1189


Аватара для VitHAK

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


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

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


Привет! У меня есть скрипт авторана на Inno Setup Script.
В нём есть кнопка:
Код: Выделить весь код
  btn2:= TButton.Create(AutoRun);
  with btn2 do begin
    Parent:= AutoRun;
    Left := 280;
    Top := 185;
    Width := 270;
    Height := 22;
    Caption:= 'Начать игру';
    Cursor:= crHand;
    OnClick := @btn2Click;
  end;
Эта кнопка запускает процедуру:
Код: Выделить весь код
procedure btn2Click(Sender: TObject);
var
  CurPageID: Integer;
begin
  Exec(ExpandConstant('{src}\Setup.exe'),'','',SW_SHOW,ewNoWait,ResultCode)
  AutoRun.Close;
  PostMessage(WizardForm.CancelButton.Handle, BM_CLICK, 0, 0);
end;
Как сделать чтоб эта кнопка была неактивная при отсутствии {src}\Setup.exe ?

P.S. Я знаю что это делается процедурой:
Код: Выделить весь код
begin 
btn2.Enabled := False; 
end
Но как сделать проверку наличия файла {src}\Setup.exe ?

Отправлено: 19:06, 02-08-2009 | #1190



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Inno Setup. Прочие вопросы El Sanchez Автоматическая установка приложений 653 09-01-2023 20:13
Утилиты - [addon] Inno Setup CrOsP Наборы обновлений для Windows XP/2003/Windows 7 33 11-05-2011 16:03
Inno Setup 5.3.6 OSZone Software Новости программного обеспечения 0 15-11-2009 17:30
[Архив] Твики реестра .: [все вопросы] :. Vadikan Автоматическая установка Windows 2000/XP/2003 1431 26-01-2008 08:51
Inno Setup tradeukraine Вебмастеру 3 13-06-2006 20:39




 
Переход