[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[Registry]
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Assassin's Creed 3; ValueType: string; ValueName: Language; ValueData: {code:SetLanguage}; Flags: uninsdeletevalue uninsdeletekeyifempty
[B][[/B]Code]
var
TestComboBox : TComboBox;
function SetLanguage(s: string): string;
begin
case TestComboBox.ItemIndex of
0: Result := 'Russian';
1: Result := 'English';
end;
end;
procedure InitializeWizard;
begin
TestComboBox := TComboBox.Create(WizardForm);
with TestComboBox do begin
Parent := WizardForm.SelectDirPage;
Style := csDropDownList;
Items.Add('RUS Версия');
Items.Add('ENG версия');
ItemIndex := 0;
SetBounds(WizardForm.DiskSpaceLabel.Left, WizardForm.DirEdit.Top + ScaleY(30), Width, Height);
end;
end;
Отдельно, используешь модули?Если отдельно в одном скрипте, то все равно надо объединять функцииRameR, я в основном делаю подключением каждой "плюшки" отдельно(заставка,статус панель) как в этом случае быть??
пример:Сделал ComboBox выбор языка на FinishedPage, значения реестра вносятся после распаковки (Installing). На FinishedPage уже не работает!
Как быть? Выходит надо, чтобы изменения в реестр вносились после закрытия FinishedPage!
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[B][[/B]Code]
var
TestComboBox : TComboBox;
function SetLanguage: string;
begin
case TestComboBox.ItemIndex of
0: Result := 'Russian';
1: Result := 'English';
end;
end;
procedure InitializeWizard;
begin
TestComboBox := TComboBox.Create(WizardForm);
with TestComboBox do begin
Parent := WizardForm.FinishedPage;
Style := csDropDownList;
Items.Add('RUS Версия');
Items.Add('ENG версия');
ItemIndex := 0;
SetBounds(WizardForm.WizardBitmapImage2.Width + ScaleX(10), WizardForm.Bevel.Top - ScaleY(30), Width, Height);
end;
end;
procedure DeinitializeSetup();
begin
RegWriteStringValue(HKLM, 'SOFTWARE\Ubisoft\Assassin''s Creed 3', 'Language', SetLanguage);
end;
var MyFont: TFont;
begin
ExtractTemporaryFile('botva2.dll')
ExtractTemporaryFile('StatusPanel.png');
ExtractTemporaryFile('StatusPanel2.png');
WizardForm.Width:= 790;
WizardForm.InnerNotebook.Hide;
WizardForm.OuterNotebook.Hide;
MyFont:= TFont.Create
MyFont.Size:=8;
// | отключаем функцию сортировки страниц
STS_Init(ExpandConstant('{tmp}\StatusPanel.png'), ExpandConstant('{tmp}\StatusPanel.png'), 0, 20, WizardForm.Width, 20, MyFont, False);
//Если вы отключили функцию сортировки страниц, то должны добавлять страницы
//которые будут использоваться в панели, строго по порядку их показывания
//Иначе панель будет неправильно отображать текущий статус
//Pagename PageID
STS_AddStage(CustomMessage('STSWelcomePage'), wpWelcome); //добавляет строку с названием страницы в панель
STS_AddStage(CustomMessage('STSDirEditPage'), wpSelectDir);
//STS_AddStage(CustomMessage('STSReadyPage'), wpReady);
STS_AddStage(CustomMessage('STSInstallingPage'), wpInstalling);
STS_AddStage(CustomMessage('STSFinishedPage'), wpFinished);
STS_SetColor(clGray, clWhite);
STS_CreatePanel();
[COLOR="Red"]end;
end; [/COLOR] -------------- вот тут пишет [B]что period ('.') expected[/B] что это значит??
ай яй яй, нельзя так делать, ведь я могу отменить установку, а ключ всё равно внесётся + при деинсталляции не удалитсяпример:Код:[Setup] AppName=My Application AppVersion=1.5 DefaultDirName={pf}\My Application [B][[/B]Code] var TestComboBox : TComboBox; function SetLanguage: string; begin case TestComboBox.ItemIndex of 0: Result := 'Russian'; 1: Result := 'English'; end; end; procedure InitializeWizard; begin TestComboBox := TComboBox.Create(WizardForm); with TestComboBox do begin Parent := WizardForm.FinishedPage; Style := csDropDownList; Items.Add('RUS Версия'); Items.Add('ENG версия'); ItemIndex := 0; SetBounds(WizardForm.WizardBitmapImage2.Width + ScaleX(10), WizardForm.Bevel.Top - ScaleY(30), Width, Height); end; end; procedure DeinitializeSetup(); begin RegWriteStringValue(HKLM, 'SOFTWARE\Ubisoft\Assassin''s Creed 3', 'Language', SetLanguage); end;
#define MyAppName "R.G. Origins"
#define MyAppVersion "1.5"
[Setup]
AppName={#MyAppName}
AppVersion={#MyAppVersion}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
[Messages]
BeveledLabel= {#MyAppName} {#MyAppVersion}
[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[*Code]
procedure InitializeWizard();
begin
with WizardForm do begin
with BeveledLabel do begin
Font.Color:=clRed;
Enabled:=True;
end;
end;
end;
Размер SelectDirPage:Как изменить размер окна выбора папки установки?
[Setup]
AppName=The_Best_App
AppVerName=The_Best_App
DefaultDirName={pf}\The_Best_App
[Languages]
Name: Russian; MessagesFile: compiler:Languages\Russian.isl;
Name: English; MessagesFile: compiler:Languages\English.isl;
[CustomMessages]
Russian.Reset=Сброс
English.Reset=Reset
[B][[/B]code]
var
BrowseForm: TSetupForm;
DirTreeView: TFolderTreeView;
Edit: TNewEdit;
procedure DirFolderChange(Sender: TObject);
begin
if DirTreeView.Directory <> WizardForm.DirEdit.Text then
Edit.Text := AddBackslash(DirTreeView.Directory) + '{#SetupSetting("AppName")}' else
Edit.Text := DirTreeView.Directory;
end;
procedure BrowseForm_Buttons_OnClick(Sender: TObject);
begin
case TButton(Sender).Tag of
15: Edit.Text := RemoveBackslashUnlessRoot(ExpandConstant('{#SetupSetting("DefaultDirName")}'));
16: begin
DirTreeView.CreateNewDirectory(SetupMessage(msgNewFolderName));
Edit.Text := AddBackslash(DirTreeView.Directory) + '{#SetupSetting("AppName")}';
end;
17: if Edit.Text <> WizardForm.DirEdit.Text then WizardForm.DirEdit.Text := Edit.Text;
end;
end;
procedure BrowseClick(Sender: TObject);
begin
BrowseForm := CreateCustomForm();
with BrowseForm do
begin
Width := ScaleX(389);
Height := ScaleY(390);
Caption := SetupMessage(msgBrowseDialogTitle);
Position := poScreenCenter;
with TLabel.Create(nil) do
begin
SetBounds(ScaleX(7), ScaleY(4), ScaleX(207), ScaleY(16));
Caption := SetupMessage(msgBrowseDialogLabel);
Parent := BrowseForm;
Font.Size := 8;
end;
DirTreeView := TFolderTreeView.Create(nil)
with DirTreeView do
begin
SetBounds(ScaleX(4), ScaleY(52), ScaleX(376), ScaleY(265));
OnChange := @DirFolderChange;
Parent := BrowseForm;
end;
Edit := TNewEdit.Create(nil);
with Edit do
begin
SetBounds(ScaleX(4), ScaleY(25), ScaleX(376), ScaleY(21));
Text := DirTreeView.Directory;
Parent := BrowseForm;
Font.Color := clWindowText;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(4), ScaleY(330), ScaleX(90), ScaleX(22));
Parent := BrowseForm;
Caption := SetupMessage(msgButtonCancel);
Cursor := crHand;
ModalResult := mrCancel;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(99), ScaleY(330), ScaleX(90), ScaleY(22));
Parent := BrowseForm;
Caption := ExpandConstant('{cm:Reset}');
Tag := 15;
Cursor := crHand;
OnClick := @BrowseForm_Buttons_OnClick;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(194), ScaleY(330), ScaleX(90), ScaleY(22));
Parent := BrowseForm;
Caption := SetupMessage(msgButtonNewFolder);
Tag := 16;
Cursor := crHand;
OnClick := @BrowseForm_Buttons_OnClick;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(289), ScaleY(330), ScaleX(90), ScaleY(22));
Parent := BrowseForm;
Caption := SetupMessage(msgButtonOK);
Tag := 17;
OnClick := @BrowseForm_Buttons_OnClick;
Cursor := crHand;
ModalResult := mrOk;
end;
DirTreeView.ChangeDirectory(AddBackslash(WizardForm.DirEdit.Text), True);
ShowModal;
Free;
end;
end;
procedure InitializeWizard;
begin
WizardForm.DirBrowseButton.Hide;
with TButton.Create(nil) do
begin
Parent := WizardForm.SelectDirPage;
SetBounds(WizardForm.DirBrowseButton.Left, WizardForm.DirBrowseButton.Top, WizardForm.DirBrowseButton.Width, WizardForm.DirBrowseButton.Height - ScaleY(1));
Caption := SetupMessage(msgButtonBrowse);
OnClick := @BrowseClick;
Cursor := crHand;
end;
end;