PDA

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 [180] 181 182 183 184 185 186 187 188

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)

Sollar
19-10-2011, 18:05
объясните почему эта функция не срабатывает только на 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
У кого нить есть пример создания формы с нуля очень нужно можно в пм)

Rikill
20-10-2011, 00:12
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, по рукам?

Rikill
20-10-2011, 16:21
valyok666, а что сложного??? Просто подгружаешь как обычно кнопочки/картинки и всё.

valyok666
20-10-2011, 17:21
Rikill, просто формами не занимался до поры до времени)вот и решил поинтересоваться=))




© OSzone.net 2001-2012