Скрипты Inno Setup. Помощь и советы [часть 8]
-
R.i.m.s.k.y.
Re: Скрипты Inno Setup. Помощь и советы [часть 8]
а как называется функция, инициализирующая окошко выбора языка? что-то initializelanguagewindow чтоле? попробую через нее
-
R.i.m.s.k.y.
Re: Скрипты Inno Setup. Помощь и советы [часть 8]
vadjliss, Как это читать? Знаки препинания где?
Цитата vadjliss:
парни как прописать ярлыки имеется программа на рабочий стол надо 4 ярлыка вывести как сделать?
Код:
Цитата vadjliss:
парни как прописать ярлыки имеется программа на рабочий стол надо 4 ярлыка вывести как сделать?
Скрипты Inno Setup. Помощь и советы [часть 8]
Код:
Код: Выделить всё
[Icons]
Name: {userdesktop}\Ярлык к Программе 1; Filename: {app}\MyProg.exe
Name: {userdesktop}\Ярлык к Программе 2; Filename: {app}\MyProg.exe
Name: {userdesktop}\Ярлык к Программе 3; Filename: {app}\MyProg.exe-
Stealthmax
-
El Sanchez
Re: Скрипты Inno Setup. Помощь и советы [часть 8]
Всем привет! Таки доделываю скрипт для сборки CS:S, но столкнулся с одним нюансом при установке на Windows 8:

Этот файл запускается после завершения установки
Код:
Если запускать от имени администратора, то эта ошибка исчезает. Вопрос: можно ли посредством манипуляций в скрипте это исправить?
_________________________________
Второй глюк. Ниже код создания ярлыков:
Код:
При первой установке на Windows 8 не появляется ярлык удалить в метро-меню. Во время повторной установки в ту же папку - появляется. Парадокс...

Этот файл запускается после завершения установки
Код:
Код: Выделить всё
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilentЕсли запускать от имени администратора, то эта ошибка исчезает. Вопрос: можно ли посредством манипуляций в скрипте это исправить?
_________________________________
Второй глюк. Ниже код создания ярлыков:
Код:
Код: Выделить всё
[Icons]
Name: "{group}\Запустить {#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{group}\Сайт сообщества"; Filename: "{#MyAppURL}"
Name: "{group}\Удалить сборку"; Filename: "{uninstallexe}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchiconПри первой установке на Windows 8 не появляется ярлык удалить в метро-меню. Во время повторной установки в ту же папку - появляется. Парадокс...
-
Stealthmax
Re: Скрипты Inno Setup. Помощь и советы [часть 8]
Здравствуйте уважаемые форумчане.
У меня такой вопрос - имеется кусок скрипта со слайдшоу для препроцессора:
Код
[spoiler]Код: [/spoiler]
Так вот можно ли каким-нибудь образом организовать автоматическое создание списка изображений (циклом или ещё как) в зависимости от количества файлов в папке, чтобы если
Source: SlideShou\* содержит 15 изображений то
ExtractTemporaryFile('Screen (1).jpg');
ssAddImage(ExpandConstant('{tmp}')+'\Screen (1).jpg');
.......
ExtractTemporaryFile('Screen (15).jpg');
ssAddImage(ExpandConstant('{tmp}')+'\Screen (15).jpg');
ssStartShow;
а если содержит 30 изображений то
ExtractTemporaryFile('Screen (1).jpg');
ssAddImage(ExpandConstant('{tmp}')+'\Screen (1).jpg');
.......
ExtractTemporaryFile('Screen (30).jpg');
ssAddImage(ExpandConstant('{tmp}')+'\Screen (30).jpg');
ssStartShow;
У меня такой вопрос - имеется кусок скрипта со слайдшоу для препроцессора:
Код
[spoiler]Код: [/spoiler]
Код: Выделить всё
[Files]
; Файлы заставки
Source: SlideShou\*; DestDir: {tmp}; Flags: dontcopy deleteafterinstall noencryption nocompression;
Source: J:\Soft\ISS\Resource\isgsg_0.6.0.69.dll; DestDir: {tmp}; DestName: isgsg.dll; Flags: dontcopy deleteafterinstall noencryption nocompression overwritereadonly
[-Code-]
//Слайд шоу
const
Indent=25;
function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall delayload';
function ssInitialize(hParent:HWND;ssTimeShow:integer;FadeOut:boolean;StretchMode:integer;BkgColor:DWORD):boolean; external 'ssInitialize@files:isgsg.dll stdcall delayload';
procedure ssDeInitialize; external 'ssDeInitialize@files:isgsg.dll stdcall delayload';
procedure ssAddImage(FileName:PAnsiChar); external 'ssAddImage@files:isgsg.dll stdcall delayload';
procedure ssStartShow; external 'ssStartShow@files:isgsg.dll stdcall delayload';
procedure ssStopShow; external 'ssStopShow@files:isgsg.dll stdcall delayload';
function GetSystemMetrics(nIndex:Integer):integer; external 'GetSystemMetrics@user32.dll stdcall delayload';
procedure InitializeWizard4();
begin
ssInitialize(GetWindowLong(MainForm.Handle,-8),8,False,1,$FF000000);
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep=ssInstall then begin
ExtractTemporaryFile('Screen (1).jpg');
ssAddImage(ExpandConstant('{tmp}')+'\Screen (1).jpg');
ExtractTemporaryFile('Screen (2).jpg');
ssAddImage(ExpandConstant('{tmp}')+'\Screen (2).jpg');
ExtractTemporaryFile('Screen (3).jpg');
ssAddImage(ExpandConstant('{tmp}')+'\Screen (3).jpg');
ExtractTemporaryFile('Screen (4).jpg');
ssAddImage(ExpandConstant('{tmp}')+'\Screen (4).jpg');
ExtractTemporaryFile('Screen (5).jpg');
ssAddImage(ExpandConstant('{tmp}')+'\Screen (5).jpg');
ExtractTemporaryFile('Screen (6).jpg');
ssAddImage(ExpandConstant('{tmp}')+'\Screen (6).jpg');
ExtractTemporaryFile('Screen (7).jpg');
ssAddImage(ExpandConstant('{tmp}')+'\Screen (7).jpg');
ExtractTemporaryFile('Screen (8).jpg');
ssAddImage(ExpandConstant('{tmp}')+'\Screen (8).jpg');
ExtractTemporaryFile('Screen (9).jpg');
ssAddImage(ExpandConstant('{tmp}')+'\Screen (9).jpg');
ExtractTemporaryFile('Screen (10).jpg');
ssAddImage(ExpandConstant('{tmp}')+'\Screen (10).jpg');
ExtractTemporaryFile('Screen (11).jpg');
ssAddImage(ExpandConstant('{tmp}')+'\Screen (11).jpg');
ExtractTemporaryFile('Screen (12).jpg');
ssAddImage(ExpandConstant('{tmp}')+'\Screen (12).jpg');
ExtractTemporaryFile('Screen (13).jpg');
ssAddImage(ExpandConstant('{tmp}')+'\Screen (13).jpg');
ExtractTemporaryFile('Screen (14).jpg');
ssAddImage(ExpandConstant('{tmp}')+'\Screen (14).jpg');
ExtractTemporaryFile('Screen (15).jpg');
ssAddImage(ExpandConstant('{tmp}')+'\Screen (15).jpg');
ExtractTemporaryFile('Screen (16).jpg');
ssAddImage(ExpandConstant('{tmp}')+'\Screen (16).jpg');
ssStartShow;
end;
if CurStep=ssPostInstall then ssStopShow;
end;
procedure CurPageChanged2(CurPageID: Integer);
begin
if CurPageID=wpInstalling then begin
WizardForm.MainPanel.Visible:=False;
WizardForm.Bevel1.Visible:=False;
WizardForm.Width:=ScaleX(395);
WizardForm.Height:=ScaleY(142);
WizardForm.Left:=ScaleX(GetSystemMetrics(0)-WizardForm.Width-Indent);
WizardForm.Top:=ScaleY(GetSystemMetrics(1)-WizardForm.Height-Indent);
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(154);
WizardForm.CancelButton.Top:=ScaleY(80);
end;
if (CurPageID=wpFinished) or (CurPageID=wpInfoAfter) then begin
if WizardForm.Width502 then begin
WizardForm.Visible:=False;
WizardForm.Width:=ScaleX(502);
WizardForm.Height:=ScaleY(392);
WizardForm.Left:=(GetSystemMetrics(0)-WizardForm.Width) div 2;
WizardForm.Top:=(GetSystemMetrics(1)-WizardForm.Height) div 2;
WizardForm.MainPanel.Visible:=True;
WizardForm.Bevel1.Visible:=True;
WizardForm.InnerNotebook.Left:=ScaleX(40);
WizardForm.InnerNotebook.Top:=ScaleY(72);
WizardForm.InnerNotebook.Width:=ScaleX(417);
WizardForm.Visible:=True;
end;
end;
end;
procedure DeinitializeSetup3();
begin
ssDeInitialize;
end;Так вот можно ли каким-нибудь образом организовать автоматическое создание списка изображений (циклом или ещё как) в зависимости от количества файлов в папке, чтобы если
Source: SlideShou\* содержит 15 изображений то
ExtractTemporaryFile('Screen (1).jpg');
ssAddImage(ExpandConstant('{tmp}')+'\Screen (1).jpg');
.......
ExtractTemporaryFile('Screen (15).jpg');
ssAddImage(ExpandConstant('{tmp}')+'\Screen (15).jpg');
ssStartShow;
а если содержит 30 изображений то
ExtractTemporaryFile('Screen (1).jpg');
ssAddImage(ExpandConstant('{tmp}')+'\Screen (1).jpg');
.......
ExtractTemporaryFile('Screen (30).jpg');
ssAddImage(ExpandConstant('{tmp}')+'\Screen (30).jpg');
ssStartShow;
-
El Sanchez
Re: Скрипты Inno Setup. Помощь и советы [часть 8]
Цитата palsn2000:
Так вот можно ли каким-нибудь образом организовать автоматическое создание списка изображений (циклом или ещё как) в зависимости от количества файлов в папке
palsn2000,
Скрытый текст
[spoiler]Код: [/spoiler]
Так вот можно ли каким-нибудь образом организовать автоматическое создание списка изображений (циклом или ещё как) в зависимости от количества файлов в папке
Скрипты Inno Setup. Помощь и советы [часть 8]
palsn2000,
Скрытый текст
[spoiler]Код: [/spoiler]
Код: Выделить всё
try
while True do
begin
ExtractTemporaryFile(Format('Screen (%d).jpg', [i + 1]));
ssAddImage(ExpandConstant(Format('{tmp}\Screen (%d).jpg', [i + 1])));
i := i + 1;
end;
except
{ no exception }
finally
if i > 0 then
ssStartShow;
end;
-
Stealthmax
Re: Скрипты Inno Setup. Помощь и советы [часть 8]
El Sanchez, Спасибо за пример, только вот, даже стыдно в этом признаваться, у меня проблема типа unknown identifier 'i'
когда указываю в константах i = 0; - ругается на строке i := i + 1;
когда в Var - ошибка с двоеточием.
когда указываю в константах i = 0; - ругается на строке i := i + 1;
когда в Var - ошибка с двоеточием.
-
El Sanchez
Re: Скрипты Inno Setup. Помощь и советы [часть 8]
Цитата palsn2000:
меня проблема типа unknown identifier 'i'
когда в Var - ошибка с двоеточием.
Что значит "ошибка с двоеточием"? Скриншот бы привели.
Объявление переменной выглядит так (это вы должны знать чуть-ли не в первую очередь):
Код:
меня проблема типа unknown identifier 'i'
когда в Var - ошибка с двоеточием.
Скрипты Inno Setup. Помощь и советы [часть 8]
Что значит "ошибка с двоеточием"? Скриншот бы привели.
Объявление переменной выглядит так (это вы должны знать чуть-ли не в первую очередь):
Код:
Код: Выделить всё
Var
I: Integer;-
Stealthmax
Re: Скрипты Inno Setup. Помощь и советы [часть 8]
kotyarko@fb, Ошибка с двоеточием у меня была когда я в Var пытался занести i: 0; - потому, что при i: Integer; у меня выскакивает окошко с сообщением "Identifier expected." на строке procedure CurPageChanged2(CurPageID: Integer);
-
TryRooM
Re: Скрипты Inno Setup. Помощь и советы [часть 8]
Цитата palsn2000:
Ошибка с двоеточием у меня была когда я в Var пытался занести i: 0;
Конечно ошибка, здесь переменная так не объявляется.
Цитата palsn2000:
потому, что при i: Integer; у меня выскакивает окошко с сообщением "Identifier expected." на строке procedure CurPageChanged2(CurPageID: Integer);
Скрин, хотя бы?
Ошибка с двоеточием у меня была когда я в Var пытался занести i: 0;
Скрипты Inno Setup. Помощь и советы [часть 8]
Конечно ошибка, здесь переменная так не объявляется.
Цитата palsn2000:
потому, что при i: Integer; у меня выскакивает окошко с сообщением "Identifier expected." на строке procedure CurPageChanged2(CurPageID: Integer);
Скрипты Inno Setup. Помощь и советы [часть 8]
Скрин, хотя бы?
Nordek