Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 4]
Johny777
02-05-2012, 16:53
OnClick := @make_copy_again; »
это убитый пример!(3-й раз говорю). Вот теперь не поленюсь вернуться на много страниц назад и стереть тот полурабочий пример.
(добавлено позже... Не поленился :). Смёл свой пост!)
как сделать чтоб в начале был выбор языка? »
читай в справке (секция [Setup]) о:
ShowLanguageDialog=auto/no
LanguageDetectionMethod=uilanguage
Temyraz@fb
02-05-2012, 16:57
ты не правильно понял, в procedure CreateAutoRun(); не вставляется значение которые я указываю из файла, что я не правильно делаю?
Подскажите пожалуйста как скрыть инсталлятор до окончания функции. Хочу добиться следующего:
1) Проверена версия ОС,
2) Если не найдена запись в реестре о наличии "нетфреймворк" начинается закачка,
3) после закачки установка "фреймворка",
4) А после появляется окно инсталлятора.
[_code]
function InitializeSetup(): Boolean;
var
NetFrameWorkInstalled : Boolean;
Result1 : Boolean;
begin
if ((GetWindowsVersion shr 24) = 5) and (((GetWindowsVersion shr 16) and $FF) = 1) then
begin NetFrameWorkInstalled := RegKeyExists(HKLM,'SOFTWARE\Microsoft\.NETFramework\policy\v2.0');
if NetFrameWorkInstalled =true then
begin
Result := true;
end;
if NetFrameWorkInstalled = false then
begin
Result1 := MsgBox('Программе требуется наличие в системе .NET Framework. v2.0 Пожалуйста скачайте и установите .NET Framework после этого установка продолжится. Вы хотите скачать .NET Framework?', mbConfirmation, MB_YESNO) = idYes;
if Result1 =false then
begin
Result:=false;
end
else
begin
Result:=false;
ShellExec('open', 'http://www.microsoft.com/downloads/info.aspx?na=41&SrcFamilyId=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&SrcDisplayLang=ru&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f5%2f6%2f7%2f567758a3-759e-473e-bf8f-52154438565a%2fdotnetfx.exe','','',SW_SHOWNORMAL,ewNoWait,ErrorCode);
end;
end;
begin
if ((GetWindowsVersion shr 24) = 6) and (((GetWindowsVersion shr 16) and $FF) = 1) then
begin NetFrameWorkInstalled := RegKeyExists(HKLM,'SOFTWARE\Microsoft\.NETFramework\policy\v4.0');
if NetFrameWorkInstalled =true then
begin
Result := true;
end;
if NetFrameWorkInstalled = false then
begin
Result1 := MsgBox('Программе требуется наличие в системе .NET Framework. v4.0 Пожалуйста скачайте и установите .NET Framework после этого установка продолжится. Вы хотите скачать .NET Framework?',
mbConfirmation, MB_YESNO) = idYes;
if Result1 =false then
begin
Result:=false;
end
else
begin
Result:=false;
ShellExec('open', 'http://www.microsoft.com/downloads/info.aspx?na=41&SrcFamilyId=0A391ABD-25C1-4FC0-919F-B21F31AB88B7&SrcDisplayLang=ru&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f9%2f5%2fA%2f95A9616B-7A37-4AF6-BC36-D6EA96C8DAAE%2fdotNetFx40_Full_x86_x64.exe','','',SW_SHOWNORMAL,ewNoWait,ErrorCode);
end;
end;
end;
end;
end;
end;
[_/code]
Gnom_aka_Lexander
02-05-2012, 21:12
function InitializeSetup(): Boolean; »
эта функция отрабатывает до начала работы процедуры InitializeWizard то-есть, Wizardform не будет показан до тех пор, пока работа функции InitializeSetup не закончится. То-есть, я чего хочу сказать - вопрос ни о чем...
Почему то окно инсталлятора появляется во время скачивания фреймворка... Видимо функция завершается после начала скачки фреймворка.
Gnom_aka_Lexander
02-05-2012, 21:25
ewNoWait это флаг говорит, что можно продолжать не ожидая результата. то-есть о чем это говорит - на каждой странице один и тот-же вопрос - ну почему так лениво открыть справку?
Исправил флаги на ewWaitUntilTerminated, но визард все равно маячит(
Gnom_aka_Lexander
02-05-2012, 21:43
ivsatel, есть еще флаг ewnoWait. и с общей логикой разберись, у тебя там по два раза одно и тоже.
Лександер, нет, больше такого флага нет.
Gnom_aka_Lexander
02-05-2012, 21:52
ivsatel, из справки, TExecWait = (ewNoWait, ewWaitUntilTerminated, ewWaitUntilIdle); ошибся чуток, но сути не меняет, в справку ты так и не посмотрел.
Лександер, Спасибо большое! Разобрался чуток) Больше не выскакивает до полной отработки функции.
BlackInferno
03-05-2012, 01:13
Добрый день!
Заранее извините за, наверное, очень частый вопрос (ответа на него я не нашел), но все же:
Как сделать что бы репак включал в себе доп.софт к игре (DirectX, GameSpy Arcade и т.д.) и устанавливался по желанию пользователя (отмечался галочками).
В справке нашел вот это:
1. Нужно определиться, сколько и каких компонентов должно содержаться:
[Components]
Name: main; Description: Программные файлы; Flags: fixed; Types: custom compact full
Name: Component1; Description: Факультатив 1; Flags: checkablealone; Types: full
Name: Component2; Description: Факультатив 2; Flags: checkablealone; Types: full
2. Нужно разложить исходные файлы по каталогам, в каждом из которых ты разместишь файлы того или иного компонента:
C:\temp\MyApp\main
C:\temp\MyApp\comp1
C:\temp\MyApp\comp2
3. Нужно прописать размещение исходных файлов в скрипте, указав для них привязку к тому или иному компоненту:
[Files]
Source: C:\temp\MyApp\main\*; DestDir: {app}; Flags: ignoreversion; Components: main
Source: C:\temp\MyApp\comp1\*; DestDir: {app}; Flags: ignoreversion; Components: Component1
Source: C:\temp\MyApp\comp2\*; DestDir: {app}; Flags: ignoreversion; Components: Component2
Из этого скрипта убрал вот это, т.к. у меня нету "фиксированного" софта, только софт "по желанию":
[Components]
Name: main; Description: Программные файлы; Flags: fixed; Types: custom compact full
[Files]
Source: C:\temp\MyApp\main\*; DestDir: {app}; Flags: ignoreversion; Components: main
Сделал все как тут написано, выбор компонентов есть, они устанавливаются в ту директрорию куда надо, т.е. они записываются в директорию с игрой, но не происходит дальнейший запуск этих компонентов (DirectX, GameSpy Arcade) установка. Что делать?
Вот мой скрипт:
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "World Championship Snooker 2003"
#define MyAppVersion "1.0"
#define MyAppPublisher "BlackInferno"
#define MyAppExeName "WCS Real 2003.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={{4642489A-D726-4D4B-AE92-7FDD3B50C666}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
LicenseFile=C:\Documents and Settings\Admin\Рабочий стол\Лицензия 2003.txt
OutputDir=D:\RePack's
OutputBaseFilename=World Championship Snooker 2003
SetupIconFile=C:\Documents and Settings\Admin\Рабочий стол\Значок 2003.ico
Compression=lzma
SolidCompression=yes
[Components]
Name: Component1; Description: DirectX; Flags: checkablealone; Types: full
Name: Component2; Description: GameSpy Arcade; Flags: checkablealone; Types: full
[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[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
[Files]
Source: "C:\Program Files\WCS Real 2003\WCS Real 2003.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Program Files\WCS Real 2003\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\Downloads\Программы\DirectX.exe"; DestDir: {app}; Flags: ignoreversion; Components: Component1
Source: "D:\Downloads\Программы\GameSpy Arcade.exe"; DestDir: {app}; Flags: ignoreversion; Components: Component2
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[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
Очень расчитываю на помощь.
Заранее спасибо!
Johny777
03-05-2012, 01:33
Как сделать что бы репак включал в себе доп.софт к игре »
было 14 страниц назад
http://forum.oszone.net/post-1904226-1618.html
http://forum.oszone.net/post-1904228-1619.html
BlackInferno
03-05-2012, 01:50
Спасибо. Но не понятно.
А можно, если не сложно, растолковать на моем скрипте?
R.i.m.s.k.y.
03-05-2012, 08:08
BlackInferno, использовать секцию [Run]
[Run]
Filename: {app}\directx.exe; WorkingDir: {app}; Parameters: /Q ; Components: Component1; Flags: waituntilterminated;
Ключи тихого запуска надо смотреть для каждой проги, не у всех он /Q или /silent
Самые распространенные: /q, /Q, /quiet, /silent, /S
Бездумно их подставлять тоже не нужно, прога может ругнуться на незнакомый ключ и закрыться
Моветон класть доп.компоненты в папку программы, лучше их положить в подпапку, к примеру {app}\Redist
BloodDick
03-05-2012, 08:58
Народ, помогите создать установочный файл, чтобы была якобы установка чего либо, а внутри выполнялись совсем другие действия. Допустим надо сделать так - установка идёт, потом резкий звук(Громкий) типо крика через 5 минут крика включается музыка, а после музыки ещё одна песенка, после заверешение последней песенки установка прекращается.
это реально?
R.i.m.s.k.y.
03-05-2012, 09:05
Народ, помогите создать установочный файл, чтобы была якобы установка чего либо, а внутри выполнялись совсем другие действия. Допустим надо сделать так - установка идёт, потом резкий звук(Громкий) типо крика через 5 минут крика включается музыка, а после музыки ещё одна песенка, после заверешение последней песенки установка прекращается. »
Dick как он есть
BloodDick
03-05-2012, 09:06
Dick как он есть »
=)))) Реально помощь нужна.
BlackInferno
03-05-2012, 09:19
R.i.m.s.k.y., большое спасибо! Все получилось, однако есть еще одна маленькая проблемка:
Как вы и сказали доп.софт (DirectX, GameSpy Arcade) я положил в папку "Redist" с игрой. Сделал репак, но после установки экзешники этого доп.софта дублируются еще раз в корневой папке с игрой. Что надо изменить в скрипте, что бы это избежать?
Вот скрипт:
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "World Championship Snooker 2003"
#define MyAppVersion "1.0"
#define MyAppPublisher "BlackInferno"
#define MyAppExeName "WCS Real 2003.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={{4642489A-D726-4D4B-AE92-7FDD3B50C666}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
LicenseFile=C:\Documents and Settings\Admin\Рабочий стол\Лицензия 2003.txt
OutputDir=D:\RePack's
OutputBaseFilename=World Championship Snooker 2003
SetupIconFile=C:\Documents and Settings\Admin\Рабочий стол\Значок 2003.ico
Compression=lzma
SolidCompression=yes
[Components]
Name: Component1; Description: DirectX; Flags: checkablealone; Types: full
Name: Component2; Description: GameSpy Arcade; Flags: checkablealone; Types: full
[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[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
[Files]
Source: "C:\Program Files\WCS Real 2003\WCS Real 2003.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Program Files\WCS Real 2003\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "C:\Program Files\WCS Real 2003\Redist\DirectX.exe"; DestDir: {app}; Flags: ignoreversion; Components: Component1
Source: "C:\Program Files\WCS Real 2003\Redist\GameSpy Arcade.exe"; DestDir: {app}; Flags: ignoreversion; Components: Component2
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[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: {app}\Redist\DirectX.exe; WorkingDir: {app}; Parameters: /Q ; Components: Component1; Flags: waituntilterminated
Filename: {app}\Redist\GameSpy Arcade.exe; WorkingDir: {app}; Parameters: /Q ; Components: Component2; Flags: waituntilterminated
R.i.m.s.k.y.
03-05-2012, 09:30
BlackInferno, внимательно смотри на 3 и 4 строчку раздела [Files] параметр DestDir
Кстати а чегой-то у тебя нету секции реестра? потом ни патч не накатишь ничего официального не поставишь
И не забывай жмякать "Полезное сообщение" ;)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.