Inno Setup Тестирование инсталлятора

ffmla

Участник
I ask you to test the installer, in particular, I ask you to pay attention to the installation of additional. components.
Quick review.
1.Group browse button not disabled when checkbox checked.
2.Group edit Text color changed to silver or white automatically after uncheck the check box.
3.Control panel installation entry show the app name 5.9.1
4.There is no cancel warning.
5.if DirectX folder changed to some other place, setup rises exception, but installation further going on.
 
Последнее редактирование:

tihiy_don

Старожил
Сделал вот так вот:

Код:
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppVerName={#MyAppName} {#MyAppVersion}
 

tihiy_don

Старожил
Вот такая ерунда происходит, не знаю как сделать, чтобы сохранялся чёрный фон, если установить галочку "Не создавать папку в меню "Пуск"
1615728124306.png1615728146762.png

А если вернуть галочку, то вообще текста не видно будет на белом фоне:
1615728191345.png
code_language.pascal:
#define MyAppName "DoW Soulstorm - Unification Mod"
#define MyAppVersion "5.9.1"
#define MyAppPublisher "Tihiy_Don"
#define MyAppURL "https://vk.com/unification_mod"
#define MyAppExeName "Unification mod.exe"

[Setup]
// AppId={{B39FD1FE-EC03-4165-9390-BF6962C0F723}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppVerName={#MyAppName} {#MyAppVersion}
DefaultDirName={sd}\Games\{#MyAppName}
DefaultGroupName={#MyAppName}
WizardImageFile=Img\WizardImage.bmp
ShowTasksTreeLines=true
AllowNoIcons=yes
DisableWelcomePage=no
OutputDir=D:\Мой инсталлятор\Unification Mod
OutputBaseFilename=setup
SolidCompression=yes
CompressionThreads=auto
Compression=lzma2/ultra64
InternalCompressLevel=ultra64
LZMAUseSeparateProcess=yes
LZMANumBlockThreads=8
LZMABlockSize=262144
LZMADictionarySize=1048576
SetupIconFile=Img\icon.ico
FlatComponentsList=yes

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

[CustomMessages]
rus.Welcome1=Вас приветствует Мастер установки игры %n DoW Soulstorm: Unification Mod
rus.Welcome2=%n Рекомендуется закрыть все прочие приложения перед тем, как продолжить.%nНажмите «Далее», чтобы продолжить, или  «Отмена», чтобы выйти из программы установки.
rus.Finished1=Завершение Мастера установки %n DoW Soulstorm: Unification Mod
rus.Finished2=Игра DoW Soulstorm: Unification Mod установлена на Ваш компьютер. %nНажмите «Завершить», чтобы выйти из программы установки.

[Files]
///модули////////////////////////////////////////////////////////////
Source: "Files\ISSkin.dll"; DestDir: "{tmp}"; Flags: dontcopy     
Source: "Files\isgsg.dll"; DestDir: "{tmp}"; Flags: dontcopy       
Source: "Img\splash.png"; DestDir: "{tmp}"; Flags: dontcopy       
Source: "Files\skin.cjstyles"; DestDir: "{tmp}"; Flags: dontcopy   
Source: "Img\papka.bmp"; DestDir: "{tmp}"; Flags: dontcopy         
Source: "Img\End.bmp"; DestDir: "{tmp}"; Flags: dontcopy
Source: "Img\button.bmp"; DestDir: "{tmp}"; Flags: dontcopy
Source: Files\ISDone.dll; DestDir: {tmp}; Flags: dontcopy
////////////файлы игры///////////////////////////////////////////////
//Source: "D:\games\DoW - Soulstorm\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs;
Source: "D:\games\DoW - Soulstorm\Soulstorm.exe"; DestDir: "{app}";
Source: "D:\games\DoW - Soulstorm\DoW Mod Manager v2.1.6.exe"; DestDir: "{app}";
Source: "D:\games\DoW - Soulstorm\icon.ico"; DestDir: "{app}";
////////////софт/////////////////////////////////////////////////////
Source: "Files\DowOnlineUpdateInstaller.exe*"; DestDir: "{app}"

[Tasks]
Name: Soft; Description: Обновить библиотеки DirectX; GroupDescription: Установить дополнительное программное обеспечение:; Flags: unchecked
Name: Soft1; Description: Установить DowOnline; GroupDescription: Установить дополнительное программное обеспечение:; Flags: unchecked
//Name: desktopicon; Description: Создать ярлык на рабочем столе; GroupDescription: Ярлыки:;
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1

[Run]
Filename: {src}\Directx9\dxsetup.exe; StatusMsg: Обновления DirectX; WorkingDir: {src}; Flags: waituntilterminated; Tasks: Soft
Filename: {app}\DowOnlineUpdateInstaller.exe; Description: "Установить DowOnline"; Flags: waituntilterminated; Tasks: Soft1

[Icons]
Name: "{group}\Запустить игру"; Filename: "{app}\Soulstorm.exe"; IconFilename: "{app}\icon.ico"; WorkingDir: "{app}"
Name: "{group}\Удалить игру"; Filename: "{uninstallexe}"; WorkingDir: "{app}"
Name: "{group}\Наша группа Вконтакте"; Filename: "{#MyAppURL}"
Name: "{commondesktop}\Unification mod"; Filename: "{app}\Soulstorm.exe"; IconFilename: "{app}\icon.ico"; Tasks: desktopicon; WorkingDir: "{app}"
Name: "{commondesktop}\DoW Mod Manager v2.1.6"; Filename: "{app}\DoW Mod Manager v2.1.6.exe"; Tasks: desktopicon; WorkingDir: "{app}"

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

[code]
const
  Color = clblack;
  ButtonWidth = 80;
  ButtonHeight = 23;

  bidBack = 0;
  bidNext = 1;
  bidCancel = 2;
  bidDirBrowse = 3;
  bidGroupBrowse = 4;
  bidbtnCancelUnpacking = 5;

  PM_REMOVE = 1;
  CP_ACP = 0; CP_UTF8 = 65001;
  oneMB=1024*1024;
  Period = 250;
  VK_ESCAPE = 27;
  HC_ACTION = 0;
  WH_CALLWNDPROC = 4;
  WM_PAINT = $F;
  PCFonFLY=true;
  notPCFonFLY=false;
 
  dURL=2;

var
  LogoImage: TBitmapImage;

  MyTBaner: LongWord;

  ButtonPanel: array [0..4] of TPanel;
  ButtonImage: array [0..4] of TBitmapImage;
  ButtonLabel: array [0..4] of TLabel;

  StatusLabel, FileNameLabel, ExtractFile, StatusInfo, FinishedLabel: TLabel;
  ProgressBar: TNewProgressBar;
  CancelCode, n, ArcInd, UnPackError, StartInstall, LastTimerEvent, lastMb, baseMb: Integer;
  WndHookID, TimerID: LongWord;
  msgError: string;
  FreezeTimer: Boolean;
  totalUncompressedSize, origsize: Integer;           
  Texture2, Texture: TBitmapImage;
  NeedSpaceLabel,FreeSpaceLabel: TLabel;
  FreeMB, TotalMB: Cardinal;
  SizeStr: String;
  SizeInt: Integer;
  SymbolNumber: Integer;
  BmpFile: TBitmapImage;
  InBevel, UpBevel:TBevel;
  Finished1, LabelPct1,LabelCurrFileName,LabelTime1,LabelTime2,LabelTime3: TLabel;
  WelcomeL, WelcomeL1: TLabel;
  MyCancelButton: TButton;
  PCFVer:double;
  StartMenuIconLabel: TLabel;
  StartMenuIcon: TCheckBox;
  IsCustomFontInstalled:Boolean;
  GameFont:string;
  URLLabel,URLLabelShadow:TLabel;


///////////////////////////////////////Ссылка///////////////////////////////////////////////////////////////////////////
procedure URLLabelClick(Sender: TObject);                                                                             //
var                                                                                                                   //
  ErrorCode:integer;                                                                                                  //
begin                                                                                                                 //
  ShellExec('open','https://vk.com/unification_mod','','',SW_SHOWNORMAL,ewNoWait,ErrorCode);                          //
end;                                                                                                                  //
procedure ClickURL();                                                                                                 //
begin                                                                                                                 //
  URLLabel:=TLabel.Create(WizardForm);                                                                                //
  with URLLabel do begin                                                                                              //
    Top:=ScaleY(331)-dURL;                                                                                            //
    Left:=ScaleX(25)-dURL;                                                                                            //
    Caption:='vk.com/unification_mod';                                                                                //
    AutoSize:=True;                                                                                                   //
    Parent:=WizardForm;                                                                                               //
    Cursor:=crHand;                                                                                                   //
    Transparent:=True;                                                                                                //
    Font.Color:=clMaroon;                                                                                             //
    Font.Size:=9;                                                                                                     //
    Font.Style:=Font.Style+[fsBold];                                                                                  //
    BringToFront;                                                                                                     //
    OnClick:=@URLLabelClick;                                                                                          //                                                                                 //
  end;                                                                                                                //
end;                                                                                                                  //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
procedure CancelButtonOnClick(Sender: TObject);
begin
WizardForm.FileNamelabel.Hide;
LabelPct1.Hide;
LabelCurrFileName.Hide;
LabelTime1.Hide;
LabelTime2.Hide;
WizardForm.StatusLabel.Caption:='Откат установки...';
end;

procedure HideControls;
begin
  WizardForm.FileNamelabel.Hide;
  LabelPct1.Hide;
  LabelCurrFileName.Hide;
  LabelTime1.Hide;
  LabelTime2.Hide;
end;


//************************************************ [Начало - Вн. вид инсталла] ***************************************************//
procedure LoadSkin(lpszPath: String; lpszIniFileName: String);
external 'LoadSkin@files:isskin.dll stdcall';

////Чтобы чекбокс создания в меню пуск был белым//
procedure NoIconsLabelClick(Sender: TObject);   //
begin                                           //
  WizardForm.NoIconsCheck.OnClick(Sender);      //
end;                                            //
//////////////////////////////////////////////////
procedure UnloadSkin();
external 'UnloadSkin@files:isskin.dll stdcall';

  procedure RepaintInstall();
  begin
  ExtractTemporaryFile('button.bmp')
  ExtractTemporaryFile('papka.bmp');
  //ExtractTemporaryFile('Logo.bmp');

  //WizardForm.WizardBitmapImage.Width := ScaleX(497);
  //WizardForm.WizardBitmapImage2.Width := ScaleX(497);
  WizardForm.PageNameLabel.Width:=ScaleX(300);
  WizardForm.PageDescriptionLabel.Hide;
  WizardForm.WizardSmallBitmapImage.Hide;    //отключение иконки маленькой иконки
 
  ExtractTemporaryFile('End.bmp');
  //ExtractTemporaryFile('WizardImage.bmp');
 
  BmpFile:= TBitmapImage.Create(WizardForm);
  BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\End.bmp'));
  //BmpFile.SetBounds(0, 0, 497, 360);
  BmpFile.Stretch:= true
  BmpFile.Parent:= WizardForm.FinishedPage;

  with WizardForm.WizardBitmapImage do
  begin
    Width:= ScaleX(497);
    //Height:= ScaleX(360);
    Stretch:= True;
    Parent:= WizardForm;
  end;
 
  WizardForm.Font.Color:=clWhite;

  WizardForm.Color:=Color;
  WizardForm.WelcomePage.Color:=Color;
  WizardForm.InnerPage.Color:=Color;
  WizardForm.FinishedPage.Color:=Color;
  WizardForm.SelectDirPage.Color:=Color;
  WizardForm.SelectComponentsPage.Color:=Color;
  WizardForm.SelectProgramGroupPage.Color:=Color;
  WizardForm.SelectTasksPage.Color:=Color;
  WizardForm.ReadyPage.Color:=Color;
  WizardForm.InstallingPage.Color:=Color;

  WizardForm.PageNameLabel.Color:=Color;
  WizardForm.PageNameLabel.Font.Color:=ClWhite;
  WizardForm.MainPanel.Color:=Color;
 
  //отключения надписей на странице приветствия
  WizardForm.WelcomeLabel1.Hide;
  WizardForm.WelcomeLabel2.Hide;
 
  WizardForm.SelectDirLabel.Color:=Color;
  WizardForm.SelectDirBrowseLabel.Color:=Color;
  WizardForm.DirEdit.Color:=Color;
  WizardForm.DiskSpaceLabel.Color:=Color;

  with TLabel.Create(WizardForm.NoIconsCheck) do
  begin
  Parent := WizardForm.NoIconsCheck.Parent;
  Caption := SetupMessage(msgNoProgramGroupCheck2);
  SetBounds(WizardForm.NoIconsCheck.Left+ScaleX(18), WizardForm.NoIconsCheck.Top+ScaleY(2), WizardForm.NoIconsCheck.Width, ScaleY(13));
  Font.Color := clWhite;
  OnClick := @NoIconsLabelClick;
  end;

  WizardForm.ComponentsList.Color:=Color;
  WizardForm.SelectComponentsLabel.Color:=Color;
  WizardForm.TypesCombo.Color:=Color;
  //WizardForm.TypesCombo.Hide;
  //WizardForm.ComponentsDiskSpaceLabel.Hide;
 
  WizardForm.GroupEdit.Color:=Color;
  WizardForm.SelectProgramGroupPage.Color:=Color;
  WizardForm.SelectStartMenuFolderLabel.Color:=Color;
  WizardForm.SelectStartMenuFolderBrowseLabel.Color:=Color;
  WizardForm.ReadyMemo.Color:=Color;
  WizardForm.ReadyLabel.Color:=Color;
 
  WizardForm.StatusLabel.Color:=Color;
  WizardForm.FilenameLabel.Color:=Color;

  //отключения надписей на странице финиша
  WizardForm.FinishedHeadingLabel.Hide;
  WizardForm.FinishedLabel.Hide;
 
  WizardForm.Font.Size:=8
  WizardForm.Font.Name:= 'Verdana'
  WizardForm.Font.Color:= ClWhite;

  //отключение линий панелей снизу и сверху
 
  //WizardForm.Bevel.visible:=False;
  //WizardForm.Bevel1.visible:=False;
  //WizardForm.ReadyMemo.ScrollBars:= ssNone

  WizardForm.SelectDirBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\papka.bmp'));
  WizardForm.SelectDirBitmapImage.AutoSize:=true;

  WizardForm.SelectGroupBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\papka.bmp'));
  WizardForm.SelectGroupBitmapImage.AutoSize:=true;

  //with WizardForm.ComponentsList do
  //begin
  //Top:=ScaleY(55);
  //Height:=ScaleY(150);
  //end;
 
  WelcomeL:=TLabel.Create(WizardForm)
  with WelcomeL do begin
  AutoSize:=False;
  SetBounds(ScaleX(-25), ScaleY(240), ScaleX(550), ScaleY(70));
  WordWrap:=True;
  Alignment := taCenter;
  Transparent:=True;
  Font.Name:='Arial';
  Font.Size:= 12;
  Font.Color:=$FFFFFF;
  Font.Style:=[fsBold];
  Caption:= ExpandConstant('{cm:Welcome1}');
  Parent:=WizardForm.WelcomePage;
  end;

  WelcomeL1:=TLabel.Create(WizardForm)
  with WelcomeL1 do begin
  AutoSize:=False;
  SetBounds(ScaleX(-25), ScaleY(268), ScaleX(550), ScaleY(100));
  WordWrap:=True;
  Alignment := taCenter;
  Transparent:=True;
  Font.Name:='Arial';
  Font.Size:= 8;
  Font.Color:=$FFFFFF;
  Caption:= ExpandConstant('{cm:Welcome2}');
  Parent:=WizardForm.WelcomePage;
  end;

  Finished1:= TLabel.Create(WizardForm)
  with Finished1 do begin
  AutoSize:=False;
  SetBounds(ScaleX(-25), ScaleY(240), ScaleX(550), ScaleY(70));
  WordWrap:=True;
  Alignment := taCenter;
  Transparent:=True;
  Font.Name:='Arial';
  Font.Size:= 12;
  Font.Color:=$FFFFFF;
  Font.Style:=[fsBold];
  Caption:= ExpandConstant('{cm:Finished1}');
  Parent:=WizardForm.FinishedPage;
  end;

  FinishedLabel:= TLabel.Create(WizardForm)
  with FinishedLabel do begin
  AutoSize:=False;
  SetBounds(ScaleX(-25), ScaleY(280), ScaleX(550), ScaleY(100));
  WordWrap:=True;
  Alignment := taCenter;
  Transparent:=True;
  Font.Name:='Arial';
  Font.Size:= 8;
  Font.Color:=$FFFFFF;
  Caption:= ExpandConstant('{cm:Finished2}');
  Parent:=WizardForm.FinishedPage;
  end;
  end;

  function InitializeSetup1(): Boolean;
  begin
  ExtractTemporaryFile('skin.cjstyles');
  LoadSkin(ExpandConstant('{tmp}\skin.cjstyles'), '');
  Result := True;
  end;

  procedure DeinitializeSetup();
  begin
  UnloadSkin();
  end;

  procedure InitializeUninstallProgressForm;
  begin
  UninstallProgressForm.Bevel.visible:=False;
  UninstallProgressForm.BeveledLabel.visible:=False;
  UninstallProgressForm.Bevel1.visible:=False;
  UninstallProgressForm.Color:=Color;
  UninstallProgressForm.InnerPage.Color:=Color;
  UninstallProgressForm.MainPanel.Color:=Color;
  UninstallProgressForm.PageNameLabel.Color:=Color;
  UninstallProgressForm.PageDescriptionLabel.Hide;
  UninstallProgressForm.PageNameLabel.Font.Color:=clWhite;
  UninstallProgressForm.PageNameLabel.Width:=ScaleX(300);
  UninstallProgressForm.StatusLabel.Color:=Color;
  UninstallProgressForm.StatusLabel.Font.Color:=clWhite;
  UninstallProgressForm.WizardSmallBitmapImage.Hide;

end;

function InitializeSetup:boolean;
begin
  InitializeSetup1()
  Result:=True;
end;
//************************************************ [Конец - Вн. вид инсталла] ***************************************************//

//************************************************ [Начало - Кнопки] ***************************************************//

procedure ButtonLabelClick(Sender: TObject);
var
  Button: TButton;
begin
  ButtonImage[TLabel(Sender).Tag].Left:=0
  case TLabel(Sender).Tag of
    bidBack: Button:=WizardForm.BackButton;
    bidNext: Button:=WizardForm.NextButton;
    bidCancel: Button:=WizardForm.CancelButton;
    bidDirBrowse: Button:=WizardForm.DirBrowseButton;
    bidGroupBrowse: Button:=WizardForm.GroupBrowseButton;
    bidbtnCancelUnpacking: Button := MyCancelButton;
  else
    Exit
  end
  Button.OnClick(Button)
end;

procedure ButtonLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if ButtonLabel[TLabel(Sender).Tag].Enabled then
     ButtonImage[TLabel(Sender).Tag].Left:=-ButtonWidth
end;

procedure ButtonLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ButtonImage[TLabel(Sender).Tag].Left:=0
end;

procedure LoadButtonImage(AButton: TButton; AButtonIndex: integer);
var
  Image: TBitmapImage;
  Panel: TPanel;
  Labl: TLabel;

begin
  Panel:=TPanel.Create(WizardForm)
  Panel.Left:=AButton.Left
  Panel.Top:=AButton.Top
  Panel.Width:=AButton.Width
  Panel.Height:=AButton.Height
  Panel.Tag:=AButtonIndex
  Panel.Parent:=AButton.Parent
  ButtonPanel[AButtonIndex]:=Panel

  Image:=TBitmapImage.Create(WizardForm) 
  Image.Width:=160                         
  Image.Height:=23
  Image.Enabled:=False
  Image.Bitmap.LoadFromFile(ExpandConstant('{tmp}\button.bmp'))
  Image.Parent:=Panel
  ButtonImage[AButtonIndex]:=Image

  with TLabel.Create(WizardForm) do begin
    Tag:=AButtonIndex
    Parent:=Panel
    Width:=Panel.Width
    Height:=Panel.Height
    Transparent:=True
    OnClick:=@ButtonLabelClick
    OnDblClick:=@ButtonLabelClick
    OnMouseDown:=@ButtonLabelMouseDown
    OnMouseUp:=@ButtonLabelMouseUp
  end;

  Labl:=TLabel.Create(WizardForm);   
  Labl.Left:=23;                       
  Labl.Top:=5;
  Labl.Autosize:=True;
  Labl.Alignment:=taCenter;
  Labl.Tag:=AButtonIndex
  Labl.Transparent:=True
  Labl.Font.Color:=clwhite
  Labl.Caption:=AButton.Caption
  Labl.OnClick:=@ButtonLabelClick
  Labl.OnDblClick:=@ButtonLabelClick
  Labl.OnMouseDown:=@ButtonLabelMouseDown
  Labl.OnMouseUp:=@ButtonLabelMouseUp
  Labl.Parent:=Panel
  ButtonLabel[AButtonIndex]:=Labl
end;

procedure UpdateButton(AButton: TButton;AButtonIndex: integer);
begin
  ButtonLabel[AButtonIndex].Caption := AButton.Caption;
  ButtonPanel[AButtonIndex].Visible := AButton.Visible;
  ButtonLabel[AButtonIndex].Enabled := Abutton.Enabled;
  ButtonLabel[AButtonIndex].Left := ButtonPanel[AButtonIndex].Width div 2 - ButtonLabel[AButtonIndex].Width div 2;
  ButtonLabel[AButtonIndex].Top := ButtonPanel[AButtonIndex].Height div 2 - ButtonLabel[AButtonIndex].Height div 2;
end;

procedure LicenceAcceptedRadioOnClick(Sender: TObject);
begin
  ButtonLabel[bidNext].Enabled:=True
end;

procedure LicenceNotAcceptedRadioOnClick(Sender: TObject);
begin
  ButtonLabel[bidNext].Enabled:=False
end;

procedure UpdateButtons(CurPageID: Integer);
begin
  UpdateButton(WizardForm.BackButton,bidBack)
  UpdateButton(WizardForm.NextButton,bidNext)
  UpdateButton(WizardForm.CancelButton,bidCancel)
  ButtonLabel[bidBack].Left := (ButtonPanel[bidBack].Width / 2 - ButtonLabel[bidBack].Width / 2);
  ButtonLabel[bidNext].Left := (ButtonPanel[bidNext].Width / 2 - ButtonLabel[bidNext].Width / 2);
  ButtonLabel[bidCancel].Left := (ButtonPanel[bidCancel].Width / 2 - ButtonLabel[bidCancel].Width / 2);
  ButtonLabel[bidDirBrowse].Left := (ButtonPanel[bidDirBrowse].Width / 2 - ButtonLabel[bidDirBrowse].Width / 2);
  ButtonLabel[bidGroupBrowse].Left := (ButtonPanel[bidGroupBrowse].Width / 2 - ButtonLabel[bidGroupBrowse].Width / 2);
end;

procedure ButtonTextures();
begin
  WizardForm.BackButton.Width:=ButtonWidth
  WizardForm.BackButton.Height:=ButtonHeight

  WizardForm.NextButton.Width:=ButtonWidth
  WizardForm.NextButton.Height:=ButtonHeight

  WizardForm.CancelButton.Width:=ButtonWidth
  WizardForm.CancelButton.Height:=ButtonHeight

  WizardForm.DirBrowseButton.Left:=337
  WizardForm.DirBrowseButton.Width:=ButtonWidth
  WizardForm.DirBrowseButton.Height:=ButtonHeight

  WizardForm.GroupBrowseButton.Left:=337
  WizardForm.GroupBrowseButton.Width:=ButtonWidth
  WizardForm.GroupBrowseButton.Height:=ButtonHeight

  WizardForm.LicenseAcceptedRadio.OnClick:=@LicenceAcceptedRadioOnClick

  WizardForm.LicenseNotAcceptedRadio.OnClick:=@LicenceNotAcceptedRadioOnClick

  LoadButtonImage(WizardForm.BackButton,bidBack)
  LoadButtonImage(WizardForm.NextButton,bidNext)
  LoadButtonImage(WizardForm.CancelButton,bidCancel)
  LoadButtonImage(WizardForm.DirBrowseButton,bidDirBrowse)
  LoadButtonImage(WizardForm.GroupBrowseButton,bidGroupBrowse)
end;
//************************************************ [Конец - Кнопки] ***************************************************//
procedure InitializeWizard();
begin
  WizardForm.NoIconsCheck.Caption:= '';
  RepaintInstall();
  ButtonTextures();
  WelcomeL.Parent:= WizardForm;
  WelcomeL1.Parent:= WizardForm;
  Finished1.Parent:= WizardForm;
  FinishedLabel.Parent:= WizardForm;
  ClickURL();
end;

Procedure CurPageChanged(CurPageID: Integer);
Begin
  UpdateButtons(CurPageID);

  WizardForm.WizardBitmapImage.Hide;
  WizardForm.Bevel1.visible:=True;
  WizardForm.Bevel.visible:=True;
  WizardForm.OuterNotebook.Show;
  WelcomeL.Hide;
  WelcomeL1.Hide;
  Finished1.Hide;
  FinishedLabel.Hide;
  URLLabel.Show;                      //показать кнопку ссылки везде, кроме страницы приветствия и страницы финиша

if CurPageID=wpWelcome then
begin
  WizardForm.Bevel1.visible:=False;
  WizardForm.Bevel.visible:=False;
  WizardForm.OuterNotebook.Hide;
  WizardForm.WizardBitmapImage.Show;
  WelcomeL.Show;
  WelcomeL1.Show;
  URLLabel.Hide;
end;
if CurPageID=wpFinished then
begin
  WizardForm.Bevel1.visible:=False;
  WizardForm.Bevel.visible:=False;
  WizardForm.OuterNotebook.Hide;
  WizardForm.WizardBitmapImage.Show;
  Finished1.Show;
  FinishedLabel.Show;
  URLLabel.Hide;
end;
end;

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Cancel:=True;
Confirm:=false;
end;

[Registry]
//Реестр DOW SS
Root: HKLM; Subkey: "Software\THQ"; Flags: createvalueifdoesntexist uninsdeletekeyifempty
/////////////////////////////////////////////////////DOW//////////////////////////////
Root: HKLM; Subkey: "Software\THQ\Dawn Of War"; Flags: createvalueifdoesntexist uninsdeletekey
Root: HKLM; Subkey: "Software\THQ\Dawn Of War"; ValueType: string; ValueName: "CDKEY"; ValueData: "3697-5fd2-5a76-0e44"
Root: HKLM; Subkey: "Software\THQ\Dawn Of War"; ValueType: string; ValueName: "CDKEY_WXP"; ValueData: "57a4-fae0-7611-1504-fa90"
Root: HKLM; Subkey: "Software\THQ\Dawn Of War"; ValueType: string; ValueName: "dawnofwar_ver"; ValueData: "1.51"
Root: HKLM; Subkey: "Software\THQ\Dawn Of War"; ValueType: string; ValueName: "installlocation"; ValueData: "{app}\DowOnlineRaceUnlocker\"
///////////////////////////////////////////////////////DOW DC/////////////////////////
Root: HKLM; Subkey: "Software\THQ\Dawn Of War - Dark Crusade"; Flags: createvalueifdoesntexist uninsdeletekey
Root: HKLM; Subkey: "Software\THQ\Dawn Of War - Dark Crusade"; ValueType: string; ValueName: "CDKEY"; ValueData: "3697-5fd2-5a76-0e44"
Root: HKLM; Subkey: "Software\THQ\Dawn Of War - Dark Crusade"; ValueType: string; ValueName: "installlocation"; ValueData: "{app}\DowOnlineRaceUnlocker\"
Root: HKLM; Subkey: "Software\THQ\Dawn Of War - Dark Crusade"; ValueType: string; ValueName: "w40kcdkey"; ValueData: "3697-5fd2-5a76-0e44"
Root: HKLM; Subkey: "Software\THQ\Dawn Of War - Dark Crusade"; ValueType: string; ValueName: "wxpcdkey"; ValueData: "57a4-fae0-7611-1504-fa90"
///////////////////////////////////////////////////////DOW SS/////////////////////////
Root: HKLM; Subkey: "Software\THQ\Dawn of War - Soulstorm"; Flags: createvalueifdoesntexist uninsdeletekey
Root: HKLM; Subkey: "Software\THQ\Dawn of War - Soulstorm"; ValueType: string; ValueName: "CDKEY"; ValueData: "BEEF-B00B-BABE-CAFE-80F1"
Root: HKLM; Subkey: "Software\THQ\Dawn of War - Soulstorm"; ValueType: string; ValueName: "dxp2cdkey"; ValueData: "8c34-5670-91a4-c2f2-bfca"
Root: HKLM; Subkey: "Software\THQ\Dawn of War - Soulstorm"; ValueType: string; ValueName: "InstallLocation"; ValueData: "{app}"
Root: HKLM; Subkey: "Software\THQ\Dawn of War - Soulstorm"; ValueType: string; ValueName: "w40kcdkey"; ValueData: "3697-5fd2-5a76-0e44"
Root: HKLM; Subkey: "Software\THQ\Dawn of War - Soulstorm"; ValueType: string; ValueName: "wxpcdkey"; ValueData: "57a4-fae0-7611-1504-fa90"
Root: HKLM; Subkey: "Software\THQ\Dawn of War - Soulstorm\1.00.0000"; Flags: createvalueifdoesntexist uninsdeletekey
 
Последнее редактирование:

Nemko

Дилетант
Модератор
как сделать, чтобы сохранялся чёрный фон, если установить галочку "Не создавать папку в меню "Пуск"
tihiy_don, использовать нормальный Skin или отредактировать этот в программе Codejock Skin Builder. Вот где можно взять нормальный Skin для теста.
 

tihiy_don

Старожил
tihiy_don, использовать нормальный Skin или отредактировать этот в программе Codejock Skin Builder. Вот где можно взять нормальный Skin для теста.
Пробовал редактировать, вообще немного не понимаю влияние его на установщик. Для теста менял цвета и прочее через программу Codejock Skin Builder, после чего экспортировал скрин. После компиляции никаких изменений нет.
 
Последнее редактирование:

Leserg

Участник
Пробовал редактировать, вообще немного не понимаю влияние его на установщик. Для теста менял цвета и прочее через программу Codejock Skin Builder, после чего экспортировал скрин. После компиляции никаких изменений нет.
"Смешались в кучу кони, люди..." (© М.Ю.Лермонтов).
Обычно, когда применяют скин, то не занимаются отдельной скинизацией кнопок и кастомным раскрашиванием элементов диалога. Какой тогда смысл использовать скин, если он потом перекрашивается? :facepalm:

Открываете файл скина в редакторе. На вкладке "Schema" выбираете схему "Common" (1), т.е. общая для всех элементов. В дереве схемы выбираете "General" > "System Metrics" (2). Переходите на вкладку свойств "Properties". Ищите свойства "BtnFace" (3) и "Window" (4).

CJ0001.png

Устанавливаете нужный цвет (черный). Тут же на этой вкладке добавляете свойства "BtnText" и "WindowText" и устанавливаете им белый цвет (цвет текста).

CJ0002.png

Сделанные настройки глобальны для всего скина.

Если нужно что-то кастомизировать, например для кнопок изменить скин, переходите на элемент кнопки и там указываете свою картинку. Например, вашу картинку button.bmp с кнопками я переделал по-быстрому вот так:

CJ0003.png

Затем выбрал её в свойстве "ImageFile". Можно не указывать, а редактировать непосредственно само изображение, которое редактор извлек при импорте стиля. Тогда после редактирования и сохранения файла изображение автоматически загрузится редактором и сразу в окне предпросмотра будет виден результат. Здесь же значение свойства "TextColor" (Цвет текста) меняете на белый.

CJ0004.png

Также цвет текста изменяем на белый для каждого состояния кнопки ("Normal", "Hot", "Pressed"), кроме "Disabled". Для отключенной кнопки используется серенький и он вполне подходит. Или меняете его тоже на свой цвет.

CJ0005.png

По окончании изменений экспортируете в файл скина (.cjstyles). Редактор пока не закрываете, вдруг надо что-то ещё подкорректировать.

Теперь из своего сценария уберите все костыли с правкой цвета и скинизацией кнопок. Иначе вы ничего не увидите и не поймете.

Тестируете скин. Если что-то не так, возвращаетесь в редактор скина и поправляете (например нужно отредактировать изображения скроллбаров и т.д.). Редактировать изображения элементов, которые никогда не будут показаны в окне мастера установки, не имеет смысла, можно оставить какие есть, например вкладки, списки, панель инструментов, меню и т.д.

Кстати при запуске вашего примера из первого сообщения, окно программы установки не скинируется. Это хорошо видно после нажатия кнопки обзор для выбора каталога установки.

CJ0000.png

Вы или неправильно подключаете скин или вообще его не подключаете. Должно быть так:

CJ0006.png

То есть смотрите, если вы используете скин, то он автоматом ложится на все диалоги инсталлятора. Если вы занимаетесь раскраской в коде, то будет закрашено только главное окно (если конечно вы ничего не пропустили), а все модальные формы (диалоги выбора, сообщения) будут по умолчанию системы.
 

tihiy_don

Старожил
@Leserg,
Большое спасибо, что потратили время на такого бездаря как я. Буду разбираться во всём этом, я взял готовый пример и решил делать всё на нём. Но как оказалось, можно делать красивые изменения в скине, без правки в секции кода. :)
 
Последнее редактирование:

tihiy_don

Старожил
Может кому пригодится, проблема подключения скина решилась путём добавления файла для уникод-версии инсталлятора - ISSkinU.dll.
 
Сверху