PDA

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


Страниц : 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

Sotonisto
24-02-2010, 13:22
Омг :) Кароч, смотри.
Создадим рядом c готовым инсталлом, например, папку ZZZ - в ней лежит директ (куча архивов и файл запуска). Тебе необходимо указать путь к файлу запуска DirectX и рабочую папку, в которой он находится (у нас это ZZZ).
В скрипте это будет выгляеть так:
Filename: {src}\ZZZ\dxsetup.exe; WorkingDir: {src}\ZZZ; Parameters: /silent; StatusMsg: ExpandConstant('{cm:DirectXInstall}'); Check: InstallDirectX; Flags: waituntilterminated; BeforeInstall: ProgressExt2()
{src} - директория в которой находится инсталл (папка или диск), {src} заменять на что-либо другое не нужно.
ZZZ - название папки с директом
dxsetup.exe - файл запуска директа

Filename: {src}\ZZZ\dxsetup.exe - путь к файлу запуска DirectX
WorkingDir: {src}\ZZZ - папка в которой находится DirectX (кароч тож самое что и Filename, только без \dxsetup.exe :) )
Понял? :)

baikalchanen
24-02-2010, 14:09
Sotonisto, Спасибо,я просто до этого путь полностью указывал,а {src} оставлял!!!

Merlin_jr
24-02-2010, 15:13
Подскажите как правильно завершить работу установщика из любых сложностей логических конструкций.

A1EXXX
24-02-2010, 17:00
Inno ISCmplr Setup (http://restools.hanzify.org/inno/Inno_ISCmplr_Setup100224(7zip).zip) 5.3.8 build 100224 от Restools (http://restools.hanzify.org/)

ImAge
24-02-2010, 23:14
Доброго времени суток у меня несколько вопросов,начал пользоватся 7z,упаковал в архив папки из игры,при компиляции и установке все нормально архивы распаковываются,НО при удалении,эти папки не удаляются а так и остаются в папке,подскажите пожалуйса что сделать?И еще один вопросик можно ли интегрировать эту распаковку 7z архивов в скрипт от YURSHAT ?Заранее спасибо,буду весьма признателен

Вот скрипт 7z
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
Compression=zip

[Languages]
Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl"

[Files]
Source: c:\game\*; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: is7z.dll; DestDir: {tmp}; Flags: dontcopy

[Icons]
Name: "{group}\Удалить"; IconFilename: "{app}\unins000.exe"; Filename: "{app}\unins000.exe"

[Code]
var
ProgressBar : TNewProgressBar;
ExtractFile:TNewStaticText;
Button1:TButton;

procedure Extract7z (hWnd, hpb, hst: THandle; fpath, extractPath, pass:pchar); external 'Extract7z@files:is7z.dll stdcall';
procedure CancelExtract; external 'CancelExtract@files:is7z.dll stdcall';

procedure InitializeWizard();
begin
ProgressBar := TNewProgressBar.Create(WizardForm);
ExtractFile:=TNewStaticText.Create(WizardForm);
with WizardForm.ProgressGauge do
begin
ProgressBar.Left := Left;
ProgressBar.Top := Top + ScaleX(55);
ProgressBar.Width := Width;
ProgressBar.Height := Height;
ProgressBar.Parent := WizardForm.InstallingPage;
ProgressBar.max := 100;
ProgressBar.Position := 0;
ExtractFile.parent:=WizardForm.InstallingPage;
ExtractFile.autosize:=false;
ExtractFile.Width := Width;
ExtractFile.top:=Top + ScaleX(35);
ExtractFile.caption:='Распаковка архива 7zip';
end;
end;

procedure Button1OnClick(Sender: TObject);
begin
CancelExtract;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
If CurStep=ssPostInstall then
begin
Button1:=TButton.create(WizardForm);
Button1.parent:=WizardForm;
Button1.width:=135;
Button1.caption:='Отменить распаковку';
Button1.left:=260;
Button1.top:=WizardForm.cancelbutton.top;
Button1.OnClick:=@Button1OnClick;
try
Extract7z (wizardform.handle, progressbar.handle, ExtractFile.handle, ExpandConstant('{src}') + '\1.7z', ExpandConstant('{app}'), '');
Button1.visible:=false;
except
MsgBox('Неверный пароль!', mbInformation, MB_OK);
Button1.visible:=false;
end;
end;
end;

YURSHAT
25-02-2010, 07:08
упаковал в архив папки из игры,при компиляции и установке все нормально архивы распаковываются,НО при удалении,эти папки не удаляются а так и остаются в папке,подскажите пожалуйса что сделать? »

[UninstallDelete]
Type: filesandordirs; Name: {app}

И еще один вопросик можно ли интегрировать эту распаковку 7z архивов в скрипт от YURSHAT ? »

Конечно можно

Jerichoman
25-02-2010, 09:30
Если я делаю антологию, как сделать так, чтобы каждая игра распаковалась в свою папку и была возможность выбора установки каждой игры по отдельности?

YURSHAT
25-02-2010, 10:32
Если я делаю антологию, как сделать так, чтобы каждая игра распаковалась в свою папку и была возможность выбора установки каждой игры по отдельности? »

:read: Почитайте справку. Особенно обратите внимание на секцию [Components]

Jerichoman
25-02-2010, 16:09
YURSHAT, справку к Inno?

A1EXXX
25-02-2010, 16:20
YURSHAT, справку к Inno? »
к микроволновке :lol:

Jerichoman
25-02-2010, 16:38
к микроволновке »
Да ну вас :tongue:

A1EXXX
25-02-2010, 16:59
Jerichoman, извини, не удержался ;) :)

Jerichoman
25-02-2010, 17:04
A1EXXX, Да ладно, сам понял что тупо получилось :)

baikalchanen
25-02-2010, 17:06
При попытке удалить игру вылетает такая ошибка--http://s47.radikal.ru/i115/1002/db/52ba0c6f8545.png (http://www.radikal.ru)
Скрипт прикрепил ниже.

vint56
25-02-2010, 17:21
baikalchanen, вот так должно быть
Source: "Files\ISSkin.dll"; DestDir: "{app}"; Flags: ignoreversion;
Source: "Files\Tiger.cjstyles"; DestDir: "{app}"; Flags: ignoreversion;
а что вышла ошибка там есть уже старая версия
unins000.dat
unins000.exe
удали их

Sotonisto
25-02-2010, 18:40
Source: "Files\ISSkin.dll"; DestDir: "{app}"; Flags: ignoreversion;
Source: "Files\Tiger.cjstyles"; DestDir: "{app}"; Flags: ignoreversion;
http://i036.radikal.ru/1002/55/699ea11ac78f.gifhttp://i036.radikal.ru/1002/55/699ea11ac78f.gifhttp://i036.radikal.ru/1002/55/699ea11ac78f.gif

У baikalchanen'а и так все правильно было, для чего эти исправления?

-----

baikalchanen, ошибка из-за того что ты упаковал файлы для удаления от другого инсталла.
Установив оригинальную игру (Руссобит-М использует инсталлы Inno Setup) в папке с игрой создались unins000.dat и unins000.exe.
Когда ты собирал инсталл они тоже "вошли" в него, и после установки (естественно) новые файлы деинсталляции не создались а остались старые :)
Просто сделай инсталл заново, ток перед сборкой удали из папки с игрой unins000.dat и unins000.exe :)

P.S.: Вот как прописывается Vegas 2 в реестре (если версия от Руссобит-М). У тебя почему-то только 9 записей (хотя тебе виднее).

Root: HKLM; Subkey: "SOFTWARE\Ubisoft"; Flags: uninsdeletekeyifempty
Root: HKLM; Subkey: "SOFTWARE\Ubisoft\Tom Clancy's Rainbow Six Vegas 2"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Ubisoft\Tom Clancy's Rainbow Six Vegas 2"; ValueType: string; ValueName: "InstallDir"; ValueData: "{app}"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Ubisoft\Tom Clancy's Rainbow Six Vegas 2"; ValueType: string; ValueName: "Language"; ValueData: "Russian"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Ubisoft\Tom Clancy's Rainbow Six Vegas 2"; ValueType: string; ValueName: "MasterType"; ValueData: "DVD"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Ubisoft\Tom Clancy's Rainbow Six Vegas 2"; ValueType: string; ValueName: "MasterLang"; ValueData: "RUS"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Ubisoft\Tom Clancy's Rainbow Six Vegas 2"; ValueType: string; ValueName: "MasterComcast"; ValueData: "FALSE"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Ubisoft\Tom Clancy's Rainbow Six Vegas 2\Russian"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Ubisoft\Tom Clancy's Rainbow Six Vegas 2\1.00"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Ubisoft\Tom Clancy's Rainbow Six Vegas 2\1.02"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Ubisoft\Tom Clancy's Rainbow Six Vegas 2\GameUpdate"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Ubisoft\Tom Clancy's Rainbow Six Vegas 2\GameUpdate"; ValueType: string; ValueName: "execPath"; ValueData: "{app}\Binaries\R6Vegas2_Game.exe"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Ubisoft\Tom Clancy's Rainbow Six Vegas 2\GameUpdate"; ValueType: string; ValueName: "info"; ValueData: "f118a34d81976a20d530115cb076da0a"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Ubisoft\Tom Clancy's Rainbow Six Vegas 2\GameUpdate"; ValueType: string; ValueName: "installdir"; ValueData: "{app}"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Ubisoft\Tom Clancy's Rainbow Six Vegas 2\GameUpdate"; ValueType: string; ValueName: "language"; ValueData: "us"; Flags: uninsdeletekey

vint56
25-02-2010, 19:16
Sotonisto, просто у многих выходила ошибка удаления

Sotonisto
25-02-2010, 20:07
Sotonisto, просто у многих выходила ошибка удаления »
Так при чем тут скин?
Он просто "впихнул" файлы старого инсталла вот и все.
А если исправлять, то - Flags: dontcopy ignoreversion (да и то только для dll) + скин в tmp.

mikrotok
26-02-2010, 01:54
народ помогите со скриптом, чтобы перед установкой программы появлялось ЛОГО проги, а затем уже начиналась сама установка, например как в переведённых модификациях от игромании, сначала появляется надпись ИГРОМАНИЯ, затем картинка самого мода, а уже после начинается процесс установки

Sotonisto
26-02-2010, 03:18
народ помогите со скриптом, чтобы перед установкой программы появлялось ЛОГО проги, а затем уже начиналась сама установка, например как в переведённых модификациях от игромании, сначала появляется надпись ИГРОМАНИЯ, затем картинка самого мода, а уже после начинается процесс установки »

mikrotok, это скорей всего сплэш (но утверждать не буду).
[Files]
Source: "isgsg.dll"; DestDir: {tmp}; Flags: dontcopy nocompression
Source: "splash.png"; DestDir: {tmp}; Flags: dontcopy nocompression

[Code]
procedure ShowSplashScreen(p1:HWND;p2:string;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:integer); external 'ShowSplashScreen@files:isgsg.dll stdcall delayload';

procedure InitializeWizard();
begin
ExtractTemporaryFile('splash.png');
ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\splash.png',1000,3000,1000,0,255,False, $FFFFFF,10);
end;

Размер картинки может быть любым.




© OSzone.net 2001-2012