Скрипты Inno Setup. Помощь и советы [часть 7]
-
ROMKA-1977
Re: Скрипты Inno Setup. Помощь и советы [часть 7]
saurn, при обычной упаковке всё OK. Но у меня упаковка не через секцию [Files] а в архивы .arc.
-
saurn
Re: Скрипты Inno Setup. Помощь и советы [часть 7]
Tixo, объявите переменную:
Код:
P.S.
Заливайте файлы в *.zip или *.rar, на худой конец в *.7z - это ускорит решение вашего вопроса. Не у всех установлен FreeArc, и не каждый станет его устанавливать.
Код:
Код: Выделить всё
var
EC: Integer;P.S.
Заливайте файлы в *.zip или *.rar, на худой конец в *.7z - это ускорит решение вашего вопроса. Не у всех установлен FreeArc, и не каждый станет его устанавливать.
-
ROMKA-1977
Re: Скрипты Inno Setup. Помощь и советы [часть 7]
Цитата Tixo:
чтот не вышло у меня, ругается на переменную EC
Поправил уже.
чтот не вышло у меня, ругается на переменную EC
Скрипты Inno Setup. Помощь и советы [часть 7]
Поправил уже.
Скрипты Inno Setup. Помощь и советы [часть 7]
-
saurn
Re: Скрипты Inno Setup. Помощь и советы [часть 7]
ROMKA-1977, в стандартном примере к библиотеке распаковка архивов находится в блоке процедуры CurStepChanged, вызов функций ISDone осуществляется на шаге ssInstall. В окончании блока:
Код:
Код:
Код: Выделить всё
if CurStep = ssInstall then begin
// здесь распаковка архивов и вызов прочих функций.
//в самом низу блока строчки
HideControls;
WizardForm.CancelButton.Visible:=true;
WizardForm.CancelButton.Enabled:=false;
// здесь отключайте кнопку
ResizeButton.Enabled := False;
end;-
ROMKA-1977
Re: Скрипты Inno Setup. Помощь и советы [часть 7]
Подскажите что означает ошибка: Exception: External exception EEDFADE.
На странице InstallingPage прописал кнопку минимизации инстала (сворачивание в нижний правый угол) и кнпку возврата в исходный размер + код слайдшоу с применением isSlideShow.dll.
Проблема: isSlideShow работает нормально но после минимизации окна и далее возврата окна в исходное состояние вылетает ошибка: Exception: External exception EEDFADE с подсветкой строки: ShowImage(piclist.strings[CurrentPicture - 1], 1, 1000);
Пример кода:
[Setup]
AppName=Name
VersionInfoVersion=5.0
AppVerName=VerName
DefaultDirName={pf}\My program
ShowTasksTreeLines=true
OutputDir=.
[Languages]
Name: Ru; MessagesFile: compiler:Languages\Russian.isl
[Tasks]
Name: Soft; Description: Установка дополнительного программного обеспечения; GroupDescription: Дополнительное программное обеспечение:; Flags: unchecked
Name: Soft/DirectX; Description: Microsoft DirectX; Flags: unchecked
Name: Soft/vcredist_x86; Description: Microsoft Visual С++ 2005 Redistributable; Flags: unchecked
Name: Soft/vcredist_x64; Description: Microsoft Visual С++ 2005 Redistributable x64; Flags: unchecked; Check: IsWin64
[Files]
Source: {win}\help\*; DestDir: {app}\Files; AfterInstall: BtnDisable(); Flags: external recursesubdirs createallsubdirs;
Source: Image_1.png; DestDir: {tmp}; Flags: dontcopy
Source: Image_2.png; DestDir: {tmp}; Flags: dontcopy
Source: Image_3.png; DestDir: {tmp}; Flags: dontcopy
Source: isSlideShow.dll; DestDir: {tmp}; Flags: dontcopy
[Run]
Filename: {src}\DirectX\DXSETUP.exe; Parameters: /silent; Tasks: Soft/DirectX; StatusMsg: Установка DirectX;
Filename: {src}\MVC++2005\vcredist_x86.exe; Tasks: Soft/vcredist_x86; Parameters: /q; StatusMsg: Установка Microsoft Visual С++ 2005 Redistributable;
Filename: {src}\MVC++2005\vcredist_x64.exe; Tasks: Soft/vcredist_x64; Parameters: /q; StatusMsg: Установка Microsoft Visual С++ 2005 Redistributable x64;
На странице InstallingPage прописал кнопку минимизации инстала (сворачивание в нижний правый угол) и кнпку возврата в исходный размер + код слайдшоу с применением isSlideShow.dll.
Проблема: isSlideShow работает нормально но после минимизации окна и далее возврата окна в исходное состояние вылетает ошибка: Exception: External exception EEDFADE с подсветкой строки: ShowImage(piclist.strings[CurrentPicture - 1], 1, 1000);
Пример кода:
читать дальше »
[Setup]
AppName=Name
VersionInfoVersion=5.0
AppVerName=VerName
DefaultDirName={pf}\My program
ShowTasksTreeLines=true
OutputDir=.
[Languages]
Name: Ru; MessagesFile: compiler:Languages\Russian.isl
[Tasks]
Name: Soft; Description: Установка дополнительного программного обеспечения; GroupDescription: Дополнительное программное обеспечение:; Flags: unchecked
Name: Soft/DirectX; Description: Microsoft DirectX; Flags: unchecked
Name: Soft/vcredist_x86; Description: Microsoft Visual С++ 2005 Redistributable; Flags: unchecked
Name: Soft/vcredist_x64; Description: Microsoft Visual С++ 2005 Redistributable x64; Flags: unchecked; Check: IsWin64
[Files]
Source: {win}\help\*; DestDir: {app}\Files; AfterInstall: BtnDisable(); Flags: external recursesubdirs createallsubdirs;
Source: Image_1.png; DestDir: {tmp}; Flags: dontcopy
Source: Image_2.png; DestDir: {tmp}; Flags: dontcopy
Source: Image_3.png; DestDir: {tmp}; Flags: dontcopy
Source: isSlideShow.dll; DestDir: {tmp}; Flags: dontcopy
[Run]
Filename: {src}\DirectX\DXSETUP.exe; Parameters: /silent; Tasks: Soft/DirectX; StatusMsg: Установка DirectX;
Filename: {src}\MVC++2005\vcredist_x86.exe; Tasks: Soft/vcredist_x86; Parameters: /q; StatusMsg: Установка Microsoft Visual С++ 2005 Redistributable;
Filename: {src}\MVC++2005\vcredist_x64.exe; Tasks: Soft/vcredist_x64; Parameters: /q; StatusMsg: Установка Microsoft Visual С++ 2005 Redistributable x64;
Код: Выделить всё
///////////////////////// Кнопки "Min" и "Max" /////////////////////////
var
ResizeButton: TButton;
PageResized, Show: Boolean;
function GetSystemMetrics(nIndex:Integer):integer;
external 'GetSystemMetrics@user32.dll stdcall delayload';
procedure MinimizeInstallPage();
begin
WizardForm.MainPanel.Hide;
WizardForm.Bevel1.Hide;
WizardForm.Width:= ScaleX(395);
WizardForm.Height:= ScaleY(142);
WizardForm.Left:= GetSystemMetrics(16)-ScaleX(420);
WizardForm.Top:= GetSystemMetrics(17)-ScaleX(150);
WizardForm.InnerNotebook.Left:= ScaleX(10);
WizardForm.InnerNotebook.Top:= ScaleY(10);
WizardForm.InnerNotebook.Width:= ScaleX(370);
WizardForm.StatusLabel.Left:= ScaleX(0);
WizardForm.StatusLabel.Top:= ScaleY(0);
WizardForm.StatusLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.FileNameLabel.Left:= ScaleX(0);
WizardForm.FileNameLabel.Top:= ScaleY(20);
WizardForm.FileNameLabel.Width:= WizardForm.InnerNotebook.Width;
WizardForm.ProgressGauge.Top:= ScaleY(40);
WizardForm.ProgressGauge.Width:= WizardForm.InnerNotebook.Width;
WizardForm.CancelButton.Left:= ScaleX(220);
WizardForm.CancelButton.Top:= ScaleY(80);
WizardForm.CancelButton.BringToFront;
ResizeButton.Left:= ScaleX(60);
ResizeButton.Top:= ScaleY(80);
ResizeButton.Caption:= 'Max.';
PageResized:= True;
end;
procedure ResumeInstallPage();
begin
WizardForm.Width:= ScaleX(503);
WizardForm.Height:= ScaleY(388);
WizardForm.Position:= poScreenCenter;
if Show then begin
WizardForm.MainPanel.SetBounds(ScaleX(0), ScaleY(0), ScaleX(497), ScaleY(58));
WizardForm.MainPanel.Show;
WizardForm.Bevel1.Show;
end;
WizardForm.InnerNotebook.SetBounds(ScaleX(40), ScaleY(72), ScaleX(417), ScaleY(237));
WizardForm.StatusLabel.SetBounds(ScaleX(0), ScaleY(0), ScaleX(417), ScaleY(16));
WizardForm.FilenameLabel.SetBounds(ScaleX(0), ScaleY(16), ScaleX(417), ScaleY(16));
WizardForm.ProgressGauge.SetBounds(ScaleX(0), ScaleY(42), ScaleX(417), ScaleY(21));
WizardForm.CancelButton.SetBounds(ScaleX(412), ScaleY(327), ScaleX(75), ScaleY(23));
ResizeButton.SetBounds(ScaleX(20), ScaleY(327),ScaleX(75), ScaleY(23));
ResizeButton.Caption:= 'Min.';
PageResized:= False;
end;
procedure ResizeButtonOnClick(Sender: TObject);
begin
If PageResized then
ResumeInstallPage
else
MinimizeInstallPage;
end;
procedure InitializeWizard1();
begin
ResizeButton:= TButton.Create(WizardForm);
ResizeButton.SetBounds(ScaleX(20), ScaleY(327),ScaleX(75), ScaleY(23));
ResizeButton.OnClick:= @ResizeButtonOnClick;
ResizeButton.Caption:= 'Min.';
ResizeButton.Hide;
ResizeButton.Parent:= WizardForm;
end;
procedure CurPageChanged1(CurPageID: Integer);
begin
ResizeButton.Hide;
case CurPageID of
wpInstalling:
begin
Show:= true;
ResizeButton.Show;
end;
wpFinished:
begin
Show:= false;
ResumeInstallPage;
end;
end;
end;
procedure BtnDisable();
begin
ResizeButton.Enabled := False;
end;
///////////////////////// isSlideShow v1.03 /////////////////////////
type
TProc=procedure(HandleW, msg, idEvent, TimeSys: LongWord);
var
TimerID: LongWord;
CurrentPicture:integer;
PicList: TStringlist;
function WrapTimerProc(Callback:TProc; NumParam:integer): longword;
external 'WrapCallback@files:isslideshow.dll stdcall';
function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): LongWord;
external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd, nIDEvent: LongWord): LongWord;
external 'KillTimer@user32.dll stdcall';
//function GetSystemMetrics(nIndex:Integer):Integer;
//external 'GetSystemMetrics@user32.dll stdcall';
procedure InitializeSlideShow(Hwnd:Thandle; l,t,w,h:integer;Animate:boolean; Stretch:integer);
external 'InitializeSlideShow@files:isslideshow.dll stdcall';
procedure DeinitializeSlideShow;
external 'DeinitializeSlideShow@files:isslideshow.dll stdcall';
procedure ShowImage(ipath:PAnsiChar; Effect:integer; SpeedTransition: integer);
external 'ShowImage@files:isslideshow.dll stdcall';
procedure InitializeWizard2();
begin
PicList:=tstringlist.Create;
ExtractTemporaryFile('Image_1.png');
ExtractTemporaryFile('Image_2.png');
ExtractTemporaryFile('Image_3.png');;
piclist.add(ExpandConstant('{tmp}') + '\Image_1.png');
piclist.add(ExpandConstant('{tmp}') + '\Image_2.png');
piclist.add(ExpandConstant('{tmp}') + '\Image_3.png');
end;
procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord);
begin
CurrentPicture:=CurrentPicture+1;
if CurrentPicture=piclist.count+1 then CurrentPicture:=1;
ShowImage(piclist.strings[CurrentPicture - 1], 1, 1000);
end;
procedure CurPageChanged2(CurPageID: Integer);
begin
If CurPageID=wpInstalling then
begin
InitializeSlideShow(WizardForm.InstallingPage.Handle, 0, 131, ScaleX(417), ScaleY(101), true, 2);
CurrentPicture:=1;
ShowImage(piclist.strings[CurrentPicture-1], 1, 1000);
TimerID:=SetTimer(0, 0, 3000, WrapTimerProc(@OnTimer, 4)); //задержка 3000 мс (3 секунды)
end;
if CurPageID=wpFinished then
begin
KillTimer(0, TimerID);
DeinitializeSlideShow;
end;
end;
procedure DeinitializeSetup();
begin
DeinitializeSlideShow;
KillTimer(0, TimerID);
end;
//////////////
procedure InitializeWizard();
begin
InitializeWizard1();
InitializeWizard2();
end;
procedure CurPageChanged(CurPageID: Integer);
begin
CurPageChanged1(CurPageID);
CurPageChanged2(CurPageID);
end;
Сборка:
[url=http://rghost.ru/58771778]http://rghost.ru/58771778[/url]-
Dodakaedr
Re: Скрипты Inno Setup. Помощь и советы [часть 7]
Всем привет! Как можно определить, требуется ли перезагрузка компа или нет? Ситуация в следующем: имеется программа которая после удаления требует перезагрузку компа, но пользователь выбирает нет и при повторной установки без перезагрузки пк не хочет устанавливаться. Как определить это самое требование перезагрузки?
-
diman_21Ru
Re: Скрипты Inno Setup. Помощь и советы [часть 7]
Всем привет в скрипте есть функции при наведение на мод описание и картинка как можно прикрутить звук при выборе мода, пример тут :
-
bandaletoff
Re: Скрипты Inno Setup. Помощь и советы [часть 7]
Доброго времени суток!
Подскажите пожалуйста, что и куда добавить в скрипт, чтобы перед деинсталляцией программы, сначала удалились драйвера. Папка с файлами на установку и удаление драйверов находится в каталоге программы.
Спасибо!
Подскажите пожалуйста, что и куда добавить в скрипт, чтобы перед деинсталляцией программы, сначала удалились драйвера. Папка с файлами на установку и удаление драйверов находится в каталоге программы.
Спасибо!
-
Zorbbb
Re: Скрипты Inno Setup. Помощь и советы [часть 7]
Уважаемые, путь к установленной игре можно узнать из секции Setup, вот пример:
Код:
А как правильно прописать такой ключ? Не пойму как быть с фигурными скобками.
Код:
Код:
Код: Выделить всё
[Setup]
DefaultDirName={reg:HKCU\SOFTWARE\Comp\Game,InstallDir|{sd}\Games\Game1}А как правильно прописать такой ключ? Не пойму как быть с фигурными скобками.
Код:
Код: Выделить всё
[HKEY_LOCAL_MACHINE\SOFTWARE\1C\{BAC329E8-C7D7-4777-8D69-3AFD40603326}]
"InstallDir"="C:\\Games\\Game1"-
Shkutu
Re: Скрипты Inno Setup. Помощь и советы [часть 7]
Всех приветствую, у меня ту вопрос возник. В инно есть такая директива как AllwaysRestart. В случае, когда она выставлена в "yes" инсталлятор после установки спрашивает пользователя, надо ли перезагружать систему и по-умолчанию выбрано "да". Так вот вопрос - как сделать так, чтоб по-умолчанию там было выбрано "нет"? Есть ли какая-то настройка для этого или какой компонент у формы инсталлятора отвечает за эти радио-кнопки?
bandaletoff, используйте секцию [UninstallRun]. подробнее можно посмотреть в справке.
bandaletoff, используйте секцию [UninstallRun]. подробнее можно посмотреть в справке.