Это мощное бесплатное средство для создания установочных пакетов (дистрибутивов) программ. Поддерживается шифрование, установка пароля, различные задачи по завершении установки. По сравнению с NSIS (основной конкурент на бесплатной основе) проще в настройке, имеет более понятную структуру скрипта, но генерит на 200-300 кб больший инсталятор. На данный момент он конкурирует и даже превосходит многие коммерческие установщики по функциональности и стабильности.
Последние версии: Inno Setup QuickStart Pack (ansi)5.4.2 [17.03.2011] Скачать (1.7 Mb) Inno Setup QuickStart Pack (unicode)5.4.2 [17.03.2011] Скачать (2 Mb) Русификатор для Inno Setup версии 5.4.x от vadimsva Скачать
Расширения от ResTools Inno Setup Compiler5.4.1 - 5.4.2 build 110319 Скачать (2.71 Mb)|Зеркало (1.54 Mb) - убраны картинки для уменьшения размера архива Inno ISCmplr Setup5.4.2 build 110329 Скачать (1.6 Mb)|Зеркало Добавляет списку компонентов возможность сворачивать дочерние элементы. Содержит более удобный редактор, кроме того, компилятор имеет множество других возможностей и новых функций. На сайте автора также есть дополнительные библиотеки. Русификатор для Inno Setup Enhanced (Restools) версии 5.4.x (ansi и unicode) от vadimsva Скачать
Сборки Inno Setup: InnoUltra5.4.2 [28.04.2011] от Gnom Сборка инструментов для работы со скриптами InnoSetup. Содержит в себе все обновленные инструменты для работы, сборка постоянно обновляется. Полная версия|Облегченная версия|Update
Как много дел считались невозможными, пока они не были осуществлены. (Гай Плиний Секунд) Не занимаюсь подключением FreeArc/ISDone к чужим скриптам.
procedure activ(var Msg: TMsg; var Handled: Boolean); begin if Msg.message=$112 then Memo1.Lines.Add('О ПРОГРАММЕ') else Memo1.Lines.Add('ФОРМА'); end;
procedure InitializeWizard(); begin Memo1:=TNewMemo.Create(WizardForm); with Memo1 do begin Parent:=WizardForm; Left:=25; Top:=188; Width:=101; Height:=42; end; Application.OnMessage:=@activ; end;
В этом примере всё ОК, я немогу понять почему тоже самое не происходит с WM_ACTIVATE??
Дата: Вторник, 12.04.2011, 21:50 | Сообщение # 183
Местный гуру
Администратор
Сообщений: 150
Статус: Offline
Quote (DaRKdemoN)
В этом примере всё ОК, я немогу понять почему тоже самое не происходит с WM_ACTIVATE??
WM_ACTIVATE это системное сообщение, которое отправляется при активации неактивного окна, так что его вряд ли можно применить к TMemo С твоим примером попробуй опустить окно инсталятора а потом снова активировать, ну или сначала открыть другое окно, а потом активировать окно инсталлятора. Как много дел считались невозможными, пока они не были осуществлены. (Гай Плиний Секунд) Не занимаюсь подключением FreeArc/ISDone к чужим скриптам.
Дата: Вторник, 12.04.2011, 22:15 | Сообщение # 184
Пользователь
Сообщений: 26
Статус: Offline
Quote (Shegorat)
С твоим примером попробуй опустить окно инсталятора а потом снова активировать, ну или сначала открыть другое окно, а потом активировать окно инсталлятора.
Так я уже пытался НЕ ПОЛУЧАЕТСЯ! Такое впечатление как будто бы WM_ACTIVATE вообще не происходит.
Quote (Edison007)
Ясно, а возможно будет сделать чтобы можно было "Открыть с помощью" > Unicode версии, Ansi версии (на выбор)?
Для таких дел есть прожка написанная на AutoIT'е под названием ContMenuFiles ЗДЕСЬ А так вот 2 reg файла Для ANSI
Code
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\InnoSetupScriptFile\shell\OpenWithInnoSetupANSI] @="Открыть с помощью Inno Setup ANSI"
знаю что это было на предыдущих страниц но .. как сделать что бы при инстоляции была кнопка "детали" а при нажатии разворачивалось окно где будет написаны файлы готовые/успешно установлены
Сообщение отредактировал goumenou - Среда, 13.04.2011, 17:32
знаю что это было на предыдущих страниц но .. как сделать что бы при инстоляции была кнопка "детали" а при нажатии разворачивалось окно где будет написаны файлы готовые/успешно установлены
[Code] var Memo: TNewMemo; ISCustomPage: TWizardPage; ShowHideButton: TButton;
procedure Log; begin Memo.Lines.Add('Извлечение: ' + ExtractFileName(CurrentFileName)); end;
procedure CurPageChanged(CurPageID: Integer); begin if CurPageID = ISCustomPage.ID then begin Memo.Parent := ISCustomPage.Surface; Memo.Lines.Add('Готово'); with WizardForm do begin BackButton.Visible := True; BackButton.Enabled := False; CancelButton.Visible := True; CancelButton.Enabled := False; end; end; end;
procedure ShowHideButtonOnClick(Sender:TObject); begin if Memo.Tag=1 then begin Memo.Show Memo.Tag:=2 end else begin Memo.Hide; Memo.Tag:=1; end; end;
procedure InitializeWizard(); begin WizardForm.TasksList.Color := clGreen; { создадим копию страницы установки, которую покажем пользователю, чтоб он мог прочитать лог... } ISCustomPage := CreateCustomPage(wpInstalling, 'Установка завершена', 'Установка успешно завершена');
with TNewProgressBar.Create(WizardForm) do begin Parent := ISCustomPage.Surface; SetBounds(WizardForm.ProgressGauge.Left, WizardForm.ProgressGauge.Top, WizardForm.ProgressGauge.Width, WizardForm.ProgressGauge.Height) ;
Max := 100; Position := 100; end;
with TNewStaticText.Create(WizardForm) do begin Parent := ISCustomPage.Surface; AutoSize := False; Caption := 'Готово'; ShowAccelChar := False; SetBounds(ScaleX(0), ScaleY(16), ScaleX(417), ScaleY(16)); end;
Memo := TNewMemo.Create(WizardForm); with Memo do begin Parent := WizardForm.InstallingPage; SetBounds(WizardForm.InstallingPage.Left, ScaleY(75), WizardForm.InstallingPage.Width, ScaleY(140)); //ReadOnly:=True; ScrollBars:=ssVertical; Tag:=2; end;
ShowHideButton:=TButton.Create(WizardForm); with ShowHideButton do begin Parent:=WizardForm.InstallingPage; SetBounds(320,13,90,25); Caption:='Show/Hide LOG' OnClick:=@ShowHideButtonOnClick; end; end;
Сообщение отредактировал DaRKdemoN - Четверг, 14.04.2011, 20:13
Доброго времени суток, решил воспользоваться таким вот кодом для отмены установки "Плавное закрытие инсталла" Возможно ли такое реализовать при запуске инсталлятора, и при нажатии кнопки "завершить", так же при успешной или не успешной установке, а не только при нажатии кнопки"отмена"?
Code
[Setup] AppName=My Program AppVerName=My Program DefaultDirName={pf}\My Program OutputDir=userdocs:InnoSetupTest.
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean); begin if MsgBox(SetupMessage(msgExitSetupMessage), mbConfirmation, MB_OKCANCEL) = IDOK then begin Confirm := False; AnimateWindow(WizardForm.Handle, 2500, AW_BLEND or AW_HIDE); Cancel := True; end else Cancel := False; end;
Доброго времени суток, решил воспользоваться таким вот кодом для отмены установки "Плавное закрытие инсталла" Возможно ли такое реализовать при запуске инсталлятора, и при нажатии кнопки "завершить", так же при успешной или не успешной установке, а не только при нажатии кнопки"отмена"?
Вот пример с использованием Timer
[Setup] AppName=My Program AppVersion=1.5 DefaultDirName={pf}\My Program
function SetTimer(hWnd: longword; nIDEvent, uElapse: longword; lpTimerFunc: LongWord): longword; external 'SetTimer@user32.dll stdcall'; function KillTimer(hWnd: longword; nIDEvent: longword): longword; external 'KillTimer@user32.dll stdcall'; function WrapTimerProc(callback:TTimerProc; paramcount:integer):LongWord; external 'wrapcallback@{tmp}\innocallback.dll stdcall delayload';
procedure MyTimerProc(h:Longword; msg: Longword; idevent: Longword; dwTime: Longword); begin WizardForm.Height:=WizardForm.Height+4; if (WizardForm.Height=388) then KillTimer(WizardForm.Handle,1); end;
procedure MyTimerProc1(h:Longword; msg: Longword; idevent: Longword; dwTime: Longword); begin WizardForm.Height:=WizardForm.Height-4; if (WizardForm.Height=28) then begin KillTimer(WizardForm.Handle,2); WizardForm.CancelButton.OnClick(WizardForm.CancelButton); end; end;
procedure MyTimerProc2(h:Longword; msg: Longword; idevent: Longword; dwTime: Longword); begin WizardForm.Height:=WizardForm.Height-4; if (WizardForm.Height=28) then begin KillTimer(WizardForm.Handle,3) WizardForm.NextButton.OnClick(WizardForm.NextButton); end; end;
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean); begin Cancel:=False; Confirm:=False;
if (WizardForm.Height=388) then begin if MsgBox(SetupMessage(msgExitSetupMessage), mbConfirmation, MB_YESNO) = IDYES then begin SetTimer(WizardForm.Handle,2,2,WrapTimerProc(@MyTimerProc1,2)); end; end; if (WizardForm.Height=28) then Cancel:=True; end;
procedure InitializeWizard(); begin WizardForm.Height:=0; SetTimer(WizardForm.Handle,1,1,WrapTimerProc(@MyTimerProc,1)); end;
function NextButtonClick(CurPageID: Integer): Boolean; begin Result:=True; if CurPageID=wpFinished then begin if not (WizardForm.Height=28) then begin SetTimer(WizardForm.Handle,3,3,WrapTimerProc(@MyTimerProc2,4)); Result:=False; end else Result:=True; end; end;
function InitializeSetup(): Boolean; begin ExtractTemporaryFile('InnoCallback.dll'); Result:=True; end;
Спасибо, теперь бы вспомнить кнопки кроме back и cancel
в расширенной версии инно открываеш форм дизайнер и делаеш двойной клик по нужной тебе кнопке - вуаля - осталось внести нужный тебе код в процедуру, только работает кривовать, но там легко поправить - он дублирует строчку.