Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 6]
Не совсем, я впервые пробую inno setup и поэтому много чего не ясно... »
Тогда справку читать просто необходимо. Вам и самому будет проще - каждый раз не задаватся вопросом, а зачем этот параметр, а что делает этот. Изучите азы, а потом можно переходить уже к более сложному. Пока посмотрите, как реализован запуск vbs сценария из секции Run, например, в этом примере из шапки (http://forum.oszone.net/post-1444931-2009.html)
Dodakaedr
21-02-2014, 11:09
nik1967, все равно выскакивают ошибки в разных секциях. Вот код, в чем ошибка? [Run]
Filename: "{tmp}\11.vbs"; Parameters: "{app}\{#MyAppExeName}"; WorkingDir: "{tmp}"; Flags: nowait postinstall shellexec;
Dodakaedr,
[Run]
Filename: {tmp}\11.vbs; Parameters: """{app}\{#MyAppExeName}"""; Description: Закрепить ярлык на панели задач; Flags: nowait postinstall shellexec;
Dodakaedr
21-02-2014, 11:54
saurn, спс)
А почему так не работает? Решил перенести в Tasks к другим ярлыкам.
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1
Name: quicklaunchicon7; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked; MinVersion: 0,6.1
[Files]
Source: "D:\1123\Kallisto.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\1123\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\script.vbs"; DestDir: {tmp}; Flags: deleteafterinstall
; Примечание: Не используйте "Flags: ignoreversion" для системных файлов
[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon
[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
Filename: "{tmp}\script.vbs"; Parameters: """{app}\{#MyAppExeName}"""; Flags: shellexec; Tasks: quicklaunchicon7
Брал с примера что вы дали.
Dodakaedr
21-02-2014, 12:23
Что именно не работает? Ярлык не создается? »
Да
Да »
А так?
[Run]
Filename: {tmp}\script.vbs; Parameters: """{app}\{#MyAppExeName}"""; Flags: shellexec; Tasks: quicklaunchicon7;
Filename: {app}\{#MyAppExeName}; Description: {cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}; Flags: nowait postinstall skipifsilent;
Поясню, где вы допустили ошибку: сценарий выполняется сверху вниз, и никак иначе. Тоесть все параметры, указаные в какой бы то нибыло секции будут выполнены в том порядке, в каком вы их задали. И так, инсталятор дошел до секции Run, где первая задача имеет флаг postinstall, тоесть должна быть выполнена после завершения установки, и ему совершенно не важно, что следующая задача, такового флага не имеет, тоесть должна быть выполнена на этапе ssPostInstall после завершения копирования файлов, создания ярлыков, папок и т.д., но до перехода на шаг ssDone. Установка завершена, инсталятор переходит на шаг ssDone и выполняет задачу с флагом postinstall, как вы ему и указали. А вот следующую в списке задачу, в вашем случае создание ярлыка, инсталятор уже не выполнит, так как она не имеет флага postinstall, и следовательно должна быть выполнена на шаге ssPostInstall, а инсталятор в этот момент уже находится на шаге ssDone. Поэтому задачи с флагами postinstall должны быть объявлены после задач, которые должны быть выполнены в процессе установки.
Dodakaedr
21-02-2014, 22:13
saurn, а почему в секции tasks не создается больше двух параметров?
а почему в секции tasks не создается больше двух параметров? »
Потому что для одной из задач, именно для задачи "Создать ярлык в панели быстрого запуска" у вас установлено условие OnlyBelowVersion: 0,6.1, тоесть только для версий винды ниже 6.1, тоесть ниже семерки. Да при установке на семерку создавать эту задачу и нет смысла, так как панели быстрого запуска из прошлых редакций в ней нет.
Dodakaedr
21-02-2014, 22:35
saurn, Почему оно на расстоянии?
http://savepic.org/5082124.jpg
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "ico"; Description: "Закрепить ярлык на Панели Задач"; Flags: unchecked;
habib2302
21-02-2014, 22:46
Dodakaedr,
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "ico"; Description: "Закрепить ярлык на Панели Задач"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked;
ты забыл добавить GroupDescription: "{cm:AdditionalIcons}"; во второй task
Dodakaedr
21-02-2014, 22:53
habib2302, спс
habib2302
21-02-2014, 22:57
Dodakaedr, Помог? От Полезное сообщение не откажусь!!!
Dodakaedr
21-02-2014, 22:59
habib2302, без проблем))
habib2302
21-02-2014, 23:32
народ, ответьте кто-нибудь пожалуйста на мое сообщение http://forum.oszone.net/post-2312607-2314.html
Dodakaedr
22-02-2014, 00:28
Как обозначаются чекбоксы?
http://savepic.org/5060610.jpg
И правильно ли я обозначил другие пункты?
Debugger
22-02-2014, 02:18
Пытаюсь сделать так:
DefaultDirName={reg:HKLM\SOFTWARE\Adobe\Photoshop\55.0,PluginPath|C:\123}
Инсталлятор прочесть из реестра не может, кажет альтернативный путь установки. Но при этом рядом есть ключ HKLM\Software\AGEIA Technologies,PhysXCore Path с ним все работает без проблем! Что за избирательность?...
habib2302,
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=.
[CustomMessages]
Caption=Действия
Description=Выберите действия которые вы хотите сделать.
NewButton1=Проверить версию для Internet Explorer
NewButton2=Проверить версию для Firefox, Safari, Opera
NewButton3=Запустить деинсталлятор Adobe Flash Player
[Code]
var
ISCustomPage1: TWizardPage;
NewButton1, NewButton2, NewButton3: TNewButton;
ResultCode: Integer;
procedure NewButton1Click(Sender: TObject);
begin
shellexec('open', ExpandConstant('{sys}\calc.exe'), '', '',SW_SHOWNORMAL, ewnowait, ResultCode)
end;
procedure NewButton2Click(Sender: TObject);
begin
shellexec('open', ExpandConstant('{sys}\notepad.exe'), '', '',SW_SHOWNORMAL, ewnowait, ResultCode)
end;
procedure NewButton3Click(Sender: TObject);
begin
shellexec('open', ExpandConstant('{sys}\cmd.exe'), '', '',SW_SHOWNORMAL, ewnowait, ResultCode)
end;
procedure InitializeWizard();
begin
ISCustomPage1 := CreateCustomPage(wpWelcome, CustomMessage('Caption'), CustomMessage('Description'));
NewButton1 := TNewButton.Create(WizardForm);
with NewButton1 do
begin
Parent := ISCustomPage1.Surface;
Left := ScaleX(24);
Top := ScaleY(32);
Width := ScaleX(371);
Height := ScaleY(33);
Caption := CustomMessage('NewButton1');
OnClick := @NewButton1Click;
end;
NewButton2 := TNewButton.Create(WizardForm);
with NewButton2 do
begin
Parent := ISCustomPage1.Surface;
Left := ScaleX(24);
Top := ScaleY(88);
Width := ScaleX(371);
Height := ScaleY(33);
Caption := CustomMessage('NewButton2');
OnClick := @NewButton2Click;
end;
NewButton3 := TNewButton.Create(WizardForm);
with NewButton3 do
begin
Parent := ISCustomPage1.Surface;
Left := ScaleX(24);
Top := ScaleY(136);
Width := ScaleX(371);
Height := ScaleY(33);
Caption := CustomMessage('NewButton3');
OnClick := @NewButton3Click;
end;
end;
Dodakaedr, То что "Перезаписать значение если параметр уже существует" - это значит что если в реестре есть параметр "Kallisto", то при установке, в параметре "Kallisto" перезапишется значение "SOFTWARE\Clients\Media\Kallisto\Capabilites".
Например в "SOFTWARE\RegisteredApplications" ранее уже имеется параметр "Kallisto", а в параметре "Kallisto" значение "SOFTWARE\Clients\Media\KallistoXXX\Capabilites".
У тебя в инсталляторе, значение "SOFTWARE\Clients\Media\Kallisto\Capabilites", то при "Перезаписать значение если параметр уже существует" - заменится значение "SOFTWARE\Clients\Media\KallistoXXX\Capabilites" на "SOFTWARE\Clients\Media\Kallisto\Capabilites"
"Деинсталлировать" - это значит что при удалении программы, удалится и ключ в реестре. Далее зависит от флагов.
Инсталлятор прочесть из реестра не может »
В реестре так:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Photoshop\55.0]
"PluginPath"="C:\\Program Files\\Adobe\\Photoshop"???
Dodakaedr
22-02-2014, 09:04
Nordek, То что они означают я знаю, вопрос в том как их прописать в inno setup?
habib2302
22-02-2014, 10:00
как сделать чтобы версия определялась через реестр и появлялся диалог с версией т.е как у D!akov'а
http://i.imgur.com/9neDH46.jpg (http://i.imgur.com/FTCHz2z.png) http://i.imgur.com/07BwNCf.jpg (http://i.imgur.com/w72TPFF.png)
и как перед установкой распаковать файлы во временную папку {tmp}
Debugger
22-02-2014, 10:21
Nordek, именно так, и есть еще одноименный раздел:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Photoshop\55.0]
"PluginPath"="C:\\Program Files\\Adobe\\Adobe Photoshop CS5.1 (64 Bit)\\Plug-Ins"
[HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Photoshop\55.0\PluginPath]
@="C:\\Program Files\\Adobe\\Adobe Photoshop CS5.1 (64 Bit)\\Plug-Ins\\"
Я думал, может инсталлятор сбивает с толку то, что есть и раздел, и ключ с одним и тем же именем, но и после удаления раздела ничего не меняется.
Добавлю, что пока я не добавил в скрипт такие строки -
UsePreviousAppDir=False
EnableDirDoesntExistWarning=True
DirExistsWarning=yes
AppendDefaultDirName=False
у меня вообще ничего не работало, даже ключ от AGEIA.
И еще вопрос - когда гуглил вопрос, многие делают то же самое, но через код на Паскале. Есть какие-то различия, или каждый делает как ему удобнее?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.