Помогите объединить два кода
[more=этот, установка обновления]
[Setup]
AppName=Tom Clancy's H.A.W.X патч
AppVerName=Tom Clancy''s H.A.W.X патч 1.02.
DefaultDirName={code:GetInstallDir}
OutputDir=D:\MyInno_Script\Tom Clancy's H.A.W.X\
OutputBaseFilename=putch102
DisableProgramGroupPage=True
DisableReadyPage=True
DirExistsWarning=false
EnableDirDoesntExistWarning=no
CreateUninstallRegKey=no
Uninstallable=no
DisableFinishedPage=True
SolidCompression=true
Compression=lzma/ultra64
[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl
[Files]
Source: "D:\MyInno_Script\Tom Clancy's H.A.W.X\putch102\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs
[Registry]
Root: HKLM; Subkey: SOFTWARE\Ubisoft\Tom Clancy's H.A.W.X\1.02.00000; ValueType: String
Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{6E36A172-06FB-4BC8-B7FC-D30D219E6776}; ValueType: dword; ValueName: Version; ValueData: $01020000; Flags: uninsdeletekey
Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{6E36A172-06FB-4BC8-B7FC-D30D219E6776}; ValueType: dword; ValueName: Language; ValueData: $00000009; Flags: uninsdeletekey
Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{6E36A172-06FB-4BC8-B7FC-D30D219E6776}; ValueType: string; ValueName: DisplayVersion; ValueData: 1.02.00000; Flags: uninsdeletekey
[Code]
function GetInstallDir(Dir: string): string;
begin
Dir := '';
RegQueryStringValue(HKLM, 'SOFTWARE\Ubisoft\Tom Clancy''s H.A.W.X\GU_DX9\GameUpdate','installdir', Dir);
Result := Dir;
end;
function InitializeSetup(): Boolean;
var
S: String;
begin
Result := True;
S := ExpandConstant('{code:GetInstallDir}');
if S = '' then
begin
SuppressibleMsgBox('Игра Tom Clancy''s H.A.W.X не найдена!', mbCriticalError, MB_OK, MB_OK);
Result := False;
Exit;
end;
{
условия необходимые для определения обновлялась игра или нет,
размер или наличие новых файлов, запись в реестре,
наличие деинсталлятора патча,
в данном случае проверяется наличие деинсталлятора
--> проверка ... если условие выполняется Result := False
}
if MsgBox('Игра Tom Clancy''s H.A.W.X найдена, желаете установить ' + '{#SetupSetting("AppVerName")}' + '?', mbConfirmation, MB_YESNO) = IDNO then
Result := False;
Exit;
end;
procedure CurPageChanged(CurPageID: Integer);
var
S: String;
begin
if CurPageID = wpWelcome then
S := ExpandConstant('{code:GetInstallDir}');
if S <> '' then
WizardForm.NextButton.OnClick(WizardForm.NextButton);
if CurPageID = wpSelectDir then
WizardForm.NextButton.OnClick(WizardForm.NextButton);
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssDone then
if CurStep = ssDone then
begin
RenameFile(ExpandConstant('{app}\Data\Sounds\PC\Russian\'), ExpandConstant('{app}\Data\Sounds\PC\English\'));
MsgBox('{#SetupSetting("AppVerName")}' + ' установлен!', mbInformation, MB_OK);
end;
end;
[/more]
с
[more=этим, преинсталляция]
[Code]
function GetSystemMetrics(nIndex: Integer): Integer; external 'GetSystemMetrics@user32.dll stdcall';
procedure InitializeWizard();
var
SplashImage: TBitmapImage;
SplashForm: TForm;
SplashFileName: String;
Form: TSetupForm;
ProgressBar: TNewProgressBar;
CancelButton: TButton;
StaticText: TNewStaticText;
BitmapImage: TBitmapImage;
BitmapFileName: string;
I : Integer;
begin
SplashFileName := ExpandConstant('{tmp}\fon1.bmp');
ExtractTemporaryFile(ExtractFileName(SplashFileName));
SplashForm := TForm.create(nil);
with SplashForm do
begin
BorderStyle := bsNone;
Position := poScreenCenter;
// Указываем размеры показываемого изображения
ClientWidth := 800;
ClientHeight := 589;
end;
SplashImage := TBitmapImage.Create(SplashForm);
with SplashImage do
begin
Bitmap.LoadFromFile(SplashFileName);
Stretch := true;
Align := alClient;
Parent := SplashForm;
end;
with SplashForm do
begin
Show;
for I := 1 to 1 do
begin
Repaint;
// показ изображения в секундах (1000 – одна секунда, 2000 – две секунды и т.д.)
Sleep(100);
end;
// Close;
// Free;
end;
begin
Form := CreateCustomForm();
try
with Form do
begin
ClientWidth := ScaleX(375); //Ширина формы для ProgressBar
ClientHeight := ScaleY(120); //Высота формы для ProgressBar
BorderStyle := bsDialog;
Left := GetSystemMetrics(16) - ClientWidth - ScaleX(5);
Top := GetSystemMetrics(17) - ClientHeight - ScaleY(5);
Caption := 'Подготовка к установке...' //Заголовок мини ProgressBar'a
end;
BitmapFileName := ExpandConstant('{tmp}\WizModernSmallImage.bmp');
ExtractTemporaryFile(ExtractFileName(BitmapFileName));
BitmapImage := TBitmapImage.Create(Form);
BitmapImage.Left := ScaleX(8);
BitmapImage.Top := ScaleY(8);
BitmapImage.Width := ScaleX(58);
BitmapImage.Height := ScaleY(58);
BitmapImage.Bitmap.LoadFromFile(BitmapFileName);
BitmapImage.Parent := Form;
StaticText := TNewStaticText.Create(Form);
StaticText.Top := BitmapImage.Top;
StaticText.Left := BitmapImage.Left + BitmapImage.Width + ScaleX(8)
StaticText.Caption := 'Идет подготовка к установке обновления игры' + #10#13 + 'Tom Clancy's H.A.W.X до версии 1.02.' + #10#13#10 + 'Пожалуйста подождите...'; //Текст самого мини ProgressBar'a
StaticText.AutoSize := True;
StaticText.Parent := Form;
CancelButton := TButton.Create(Form);
CancelButton.Parent := Form;
CancelButton.Width := ScaleX(75);
CancelButton.Height := ScaleY(23);
CancelButton.Left := Form.ClientWidth - ScaleX(75 + 10);
CancelButton.Top := Form.ClientHeight - ScaleY(23 + 10);
CancelButton.Caption := 'Отменить';
CancelButton.ModalResult := mrCancel;
CancelButton.Cancel := True;
ProgressBar := TNewProgressBar.Create(Form);
with ProgressBar do
begin
Height := CancelButton.Height - ScaleY(8);
Width := Form.Width - ScaleX(128);
Top := CancelButton.Top;
Left := BitmapImage.Left;
Parent := Form;
Min := 0;
Max := 30;
Position := 0;
end;
Form.ActiveControl := CancelButton;
Form.Show();
for i := 0 to 30 do
begin
ProgressBar.Position := i;
Form.Repaint;
Sleep(500);
i := i + 1;
end;
finally
Form.Free();
end;
end;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
If CurPageID=wpWelcome then
begin
SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
end;
end;
[/more]
Но так, чтобы преинсталляция была первой
Наоборот у меня получилось, а вот первой что-то не догоняю как