Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]
murlakatamenka
19-10-2011, 13:46
6apakyda, а чего в {tmp} прога ставится?
С помощью команды DisableFinishedPage=yes убрал последнее окно, после чего запускается exe без запроса. »
дурной тон это, обязательно надо спрашивать у пользователя, нужно ли запускать программу после установки или нет.
вот с галочкой код (ещё раз повторю, он только для Internet Explorer)
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "My Program"
#define MyAppVersion "1.5"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "MyProg.exe"
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{12C06398-3F34-4DDE-BD66-6D263C0FC8FA}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}";
Name: "homepage"; Description: "Ñäåëàòü {#MyAppURL} ñòàðòîâîé ñòðàíèöåé"; GroupDescription: "{cm:AdditionalIcons}";
[Files]
Source: "C:\Program Files (x86)\Inno Ultra\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
[Registry]
Root: HKCU; Subkey: "SOFTWARE\Microsoft\Internet Explorer\Main"; ValueName: "Start Page"; ValueType: String; ValueData: {#MyAppName}; Tasks: "homepage"; Flags: noerror
[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, "&", "&&")}}"; Flags: nowait postinstall skipifsilent
вот рекомендую почитать - Inno Setup (Инструкция по Inno Setup - Инструкция по Inno Setup в формате PDF для начинающих от sjwrec.) (http://rghost.ru/26219891)
valyok666
19-10-2011, 15:43
Почитать лучше это
Русская справка к версии 5.4.2, автор перевода BagIra, bugron формат Chm версия (http://rghost.ru/26233061)
объясните почему эта функция не срабатывает только на logPage ???
причем судя по мессаджбоксам в условие входит
function ShouldSkipPage(PageID: Integer): Boolean;
begin
{ Skip pages that shouldn't be shown }
if (not IsTaskSelected('OCS')) and (PageID = TAGPage.ID) then
Result := True
else if (not IsTaskSelected('LogMeIn')) and ((PageID = logmeinPage.ID) or (PageID = logPage.ID)) then
Result := True
else
begin
if (PageID = wpSelectTasks) then
begin
ocsTAG := GetIniString('Org'+inttostr(GetWizardSetupType()+1), 'ocsTAG', 'Error', 'C:\временная\example.ini');
LogmeinTAG := GetIniString('Org'+inttostr(GetWizardSetupType()+1), 'LogmeinTAG', 'Error', 'C:\временная\example.ini');
end;
if (PageID = logPage.ID) and (LogmeinTAG <> '' ) then
begin
login := '/c msiexec /i {tmp}{\logmein.msi /q ACCOUNTEMAIL=' + logmeinTAG + ' USERPASSWORD=' + logmeinPage.Values[0] + ' USERVERIFYPWD=' + logmeinPage.Values[0] + ' USEREMAIL=' + logmeinTAG + ' USERWEBPASSWORD=' + logmeinPage.Values[0] + ' LicenseType=free'
Result := True
end
else
begin
login := '/c msiexec /i {tmp}{\logmein.msi /q ACCOUNTEMAIL=' + logPage.Values[0] + ' USERPASSWORD=' + logmeinPage.Values[0] + ' USERVERIFYPWD=' + logmeinPage.Values[0] + ' USEREMAIL=' + logPage.Values[0] + ' USERWEBPASSWORD=' + logmeinPage.Values[0] + ' LicenseType=free'
Result := False;
end;
if ((PageID = TAGPage.ID) and (ocsTAG <> '' )) then
begin
s := 'install /S /UPGRADE /NOSPASH /SERVER:svc.ru /NP /DEBUG /NOW /TAG:' + ocsTAG;
Result := True
msgbox('ocs не срабатывает', mbInformation, MB_OK);
msgbox(s + ' ' + ocsTAG, mbInformation, MB_OK);
end
else
begin
s := 'install /S /UPGRADE /NOSPASH /SERVER:svc.ru /NP /DEBUG /NOW /TAG:' + TAGPage.Values[0];
Result := False
end;
end;
end;
6apakyda
19-10-2011, 18:33
Подскажите пожалуйста, какой флаг надо вбить чтобы распаковывался только выбранный exe файл
Вообще сдесь ли это делать надо:
[Components]
Name: XP; Description: Adobe Reader для Windows XP; Flags: exclusive
Name: Vista; Description: Adobe Reader для Windows Vista; Flags: exclusive
Name: Seven; Description: Adobe Reader для Windows 7; Flags: exclusive
insombia
19-10-2011, 21:22
6apakyda у тебя вроде все правильно выбрано
Sotonisto
19-10-2011, 22:35
murlakatamenka, спасибо за скрипт :) Но все же вопрос остался открытым :) Я вообще не использую FreeArc и не понимаю как ним пользоваться (юзаю только Inno).
valyok666
19-10-2011, 22:39
Sotonisto, юзай Isdone проще по моему
Sotonisto
19-10-2011, 22:53
Я вот только что скачал репак RE4 и там такой инсталлятор:
http://img836.imageshack.us/img836/9237/img01pq.th.jpg (http://img836.imageshack.us/img836/9237/img01pq.jpg) http://img717.imageshack.us/img717/608/img02mr.th.jpg (http://img717.imageshack.us/img717/608/img02mr.jpg) http://img687.imageshack.us/img687/9742/img03l.th.jpg (http://img687.imageshack.us/img687/9742/img03l.jpg) http://img196.imageshack.us/img196/1848/img05q.th.jpg (http://img196.imageshack.us/img196/1848/img05q.jpg)
http://img847.imageshack.us/img847/4404/img04g.th.jpg (http://img847.imageshack.us/img847/4404/img04g.jpg)
Кто может поделиться таким же/максимально похожим? :happy:
---
valyok666, вот есть немного подчищеный скрипт (он с ISDone) http://rghost.ru/26167341 (спасибо за это murlakatamenka).
Как туда вернуть стандартный прогресс бар (нынешний видит только распаковку FreeArc, 7-Zip... короче все, но только не Inno)? Если упаковать, например, игру средствами Inno - прогресс бар не будет реагировать (хотя установка будет идти) :(
valyok666
19-10-2011, 23:54
Sotonisto, там создание формы через ботву или я ошибаюсь????
valyok666
20-10-2011, 00:09
У кого нить есть пример создания формы с нуля очень нужно можно в пм)
valyok666, какая форма интересует? Типо такого? Если что, просто вешаешь на кнопку и видишь результат.
Form := CreateCustomForm();
with Form do
begin
Position := poScreenCenter;
ClientWidth := ScaleX(WizardForm.Width);
ClientHeight := ScaleY(230) div 2;
Caption := 'form';
Color := clBlack;
В var сам допишешь.
valyok666
20-10-2011, 00:16
Rikill,сорри не уточнил)через ботву
просто есть примеры разные но вот именно с нуля нет
Edison007
20-10-2011, 00:25
valyok666, Что имеется ввиду под фразой: "с нуля"?
valyok666
20-10-2011, 00:31
Edison007, какбы с комментариями пошагово так сказать.Чтобы знать как создаёться и т.д)и редактировать под как себе угодно :help:
6apakyda
20-10-2011, 02:47
Подскажите пожалуйста, какой флаг надо вбить чтобы распаковывался только выбранный exe файл
Вообще сдесь ли это делать надо:
[Components]
Name: XP; Description: Adobe Reader для Windows XP; Flags: exclusive
Name: Vista; Description: Adobe Reader для Windows Vista; Flags: exclusive
Name: Seven; Description: Adobe Reader для Windows 7; Flags: exclusive
6apakyda у тебя вроде все правильно выбрано »
Извините, я понимаю что всё выбрано правильно, но хотелось бы чтобы из этих 3-х приложений распаковывалось одно, а не все сразу. Вот мой скрипт, помогите пожалуйста(я ничего не скрываю, а только жду критики):
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "Установка Adobe Reader 10"
#define MyAppVersion "10"
#define MyAppPublisher "Сделаем-ПК"
#define MyAppURL "http://www.sdelaem-pc.ru/"
#define MyAppExeName "AdbeRdr1010_ru_RU.exe"
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{2641D155-412E-4264-ABE8-4010C59393B0}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\Adobe\Reader 10.0\
DisableDirPage=yes
DefaultGroupName={#MyAppName}
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
DisableFinishedPage=yes
Uninstallable=no
[Types]
Name: custom; Description: Выборочная установка; Flags: iscustom
[Components]
Name: XP; Description: Adobe Reader для Windows XP; Flags: exclusive
Name: Vista; Description: Adobe Reader для Windows Vista; Flags: exclusive
Name: Seven; Description: Adobe Reader для Windows 7; Flags: exclusive
[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[Files]
;Source: "C:\Documents and Settings\Администратор\Рабочий стол\сделаем пк\установка программ\adobe reader\1.txt"; DestDir: "{tmp}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
;Source: "C:\Documents and Settings\Администратор\Рабочий стол\сделаем пк\установка программ\adobe reader\2.txt"; DestDir: {tmp}; Flags: ignoreversion
;Source: "C:\Documents and Settings\Администратор\Рабочий стол\сделаем пк\установка программ\adobe reader\3.txt"; DestDir: {tmp}; Flags: ignoreversion
Source: C:\Documents and Settings\Администратор\Рабочий стол\сделаем пк\установка программ\adobe reader\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs
[Run]
;Filename: "{tmp}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, "&", "&&")}}"; Flags: nowait postinstall skipifsilent
;Filename: {pf}\Adobe\Reader 10.0\AdbeRdr1010_ru_RU(XP).exe; Components: XP; StatusMsg: Идёт установка...; Flags: waituntilterminated
;Filename: {pf}\Adobe\Reader 10.0\AdbeRdr1010_ru_RU(Vista).exe; Components: Vista; StatusMsg: Идёт установка...; Flags: waituntilterminated
;Filename: {pf}\Adobe\Reader 10.0\AdbeRdr1010_ru_RU(7).exe; Components: Seven; StatusMsg: Идёт установка...; Flags: waituntilterminated
Filename: {pf}\Adobe\Reader 10.0\1.txt; Components: XP; StatusMsg: Идёт установка...; Flags: waituntilterminated
Filename: {pf}\Adobe\Reader 10.0\2.txt; Components: Vista; StatusMsg: Идёт установка...; Flags: waituntilterminated
Filename: {pf}\Adobe\Reader 10.0\3.txt; Components: Seven; StatusMsg: Идёт установка...; Flags: waituntilterminated
[Code]
procedure InitializeWizard();
begin
if MsgBox('Сменить домашнюю страницу на {#MyAppURL} ?',mbconfirmation, mb_yesno) = IDYES then
begin
RegWriteStringValue(HKEY_CURRENT_USER, 'SOFTWARE\Microsoft\Internet Explorer\Main',
'Start Page', ExpandConstant('{#MyAppURL}'));
end;
end;
Sotonisto
20-10-2011, 06:14
6apakyda, почему бы Вам не взять за основу стандартный скрипт?
Например:
[Types]
Name: custom; Description: Выборочная установка; Flags: iscustom
[Components]
Name: prog; Description: Установить Adobe Reader для:; Types: custom; Flags: fixed;
Name: prog/1; Description: Win XP; Flags: exclusive
Name: prog/2; Description: Win Vista; Flags: exclusive
Name: prog/3; Description: Win 7; Flags: exclusive
[Run]
Filename: {src}\programs\reader_xp.exe; Components: prog/1; Flags: nowait skipifsilent;
Filename: {src}\programs\reader_vista.exe; Components: prog/2; Flags: nowait skipifsilent;
Filename: {src}\programs\reader_seven.exe; Components: prog/3; Flags: nowait skipifsilent;
Вам только прийдется скрыть инсталляцию программы через Parameters и добавить StatusMsg.
R.i.m.s.k.y.
20-10-2011, 08:17
6apakyda, ИМХО лучше вместо Components XP/Vista/Seven использовать Min/MaxVersion
murlakatamenka
20-10-2011, 14:02
Я вот только что скачал репак RE4 и там такой инсталлятор:
читать дальше »
Кто может поделиться таким же/максимально похожим? »
вот (http://inno.at.ua/load/utility/game_stripts/nfs_underground_1_2/9-1-0-112) похожий (там есть и другие скрипты)
Как туда вернуть стандартный прогресс бар (нынешний видит только распаковку FreeArc, 7-Zip... короче все, но только не Inno)? Если упаковать, например, игру средствами Inno - прогресс бар не будет реагировать (хотя установка будет идти) »
стандарнтый прорессбар скрывается и вместо него создаётся новый (вместе с другими кастомными контролами; смотрите функции CreateControls и HideControls)
распаковка идёт через ISDone, посмотрите скрипт, который с ним идёт и легко уберёте всё исдонное из скрипта.
»
а ещё лучше 1 раз разобраться с ISDone (http://krinkels.ru/forum/showthread.php?34-ISDone), оно того стоит. очень хороший и информативный help к нему идёт, почитать его и можно разобраться.
давайте так, я сделаю возможность включать/отключать ISDone в скрипте через препроцессор (закомментил 1 строку - инновское lzma, раскомментил - ISDone. + по блоку #ifdef ISDone ... #endif можно будет увидеть код от ISDone), а вы освоите ISDone и FreeArc, по рукам?
valyok666, а что сложного??? Просто подгружаешь как обычно кнопочки/картинки и всё.
valyok666
20-10-2011, 17:21
Rikill, просто формами не занимался до поры до времени)вот и решил поинтересоваться=))
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC