Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Musicbotva2.iss"
- #include "MusicBASS_Module.iss"
- [Code]
- function ShellExecute(hwnd: HWND; lpOperation: string; lpFile: string;
- lpParameters: string; lpDirectory: string; nShowCmd: Integer): THandle;
- external 'ShellExecuteW@shell32.dll stdcall';
- var
- LanguageForm: TSetupForm;
- SelectLabel: TNewStaticText;
- CancelButton: TNewButton;
- procedure LangChange(Sender : TObject);
- begin
- case TNewComboBox(Sender).ItemIndex of
- 0: { English }
- begin
- SelectLabel.Caption := 'Select the language to the installation:';
- CancelButton.Caption := 'Cancel';
- LanguageForm.Caption := 'Party Hard 1.4.5 (nizcoz)';
- end;
- 1: { Español }
- begin
- SelectLabel.Caption := 'Selecciona el idioma de la instalación:';
- CancelButton.Caption := 'Cancelar';
- LanguageForm.Caption := 'Party Hard 1.4.5 (nizcoz)';
- end;
- end;
- end;
- procedure SelectLanguage();
- var
- OKButton: TNewButton;
- LangCombo: TNewComboBox;
- Languages: TStrings;
- Params: string;
- Instance: THandle;
- P, I: Integer;
- S, L: string;
- begin
- Languages := TStringList.Create();
- Languages.Add('eng=English');
- Languages.Add('spa=Español');
- LanguageForm := CreateCustomForm;
- LanguageForm.Caption := SetupMessage(msgSelectLanguageTitle);
- LanguageForm.ClientWidth := ScaleX(240);
- LanguageForm.ClientHeight := ScaleY(125);
- LanguageForm.BorderStyle := bsDialog;
- LanguageForm.Center;
- CancelButton := TNewButton.Create(LanguageForm);
- CancelButton.Parent := LanguageForm;
- CancelButton.Left := ScaleX(140);
- CancelButton.Top := ScaleY(93);
- CancelButton.Width := ScaleY(90);
- CancelButton.Height := ScaleY(23);
- CancelButton.TabOrder := 3;
- CancelButton.ModalResult := mrCancel;
- CancelButton.Caption := SetupMessage(msgButtonCancel);
- OKButton := TNewButton.Create(LanguageForm);
- OKButton.Parent := LanguageForm;
- OKButton.Left := ScaleX(10);
- OKButton.Top := ScaleY(93);
- OKButton.Width := ScaleX(90);
- OKButton.Height := ScaleY(23);
- OKButton.Caption := SetupMessage(msgButtonOK);
- OKButton.Default := True
- OKButton.ModalResult := mrOK;
- OKButton.TabOrder := 2;
- LangCombo := TNewComboBox.Create(LanguageForm);
- LangCombo.Parent := LanguageForm;
- LangCombo.Left := ScaleX(16);
- LangCombo.Top := ScaleY(56);
- LangCombo.Width := ScaleX(206);
- LangCombo.Height := ScaleY(21);
- LangCombo.Style := csDropDownList;
- LangCombo.DropDownCount := 16;
- LangCombo.TabOrder := 1;
- SelectLabel := TNewStaticText.Create(LanguageForm);
- SelectLabel.Parent := LanguageForm;
- SelectLabel.Left := ScaleX(16);
- SelectLabel.Top := ScaleY(15);
- SelectLabel.Width := ScaleX(273);
- SelectLabel.Height := ScaleY(39);
- SelectLabel.AutoSize := False
- SelectLabel.Caption := SetupMessage(msgSelectLanguageLabel);
- SelectLabel.TabOrder := 0;
- SelectLabel.WordWrap := True;
- for I := 0 to Languages.Count - 1 do
- begin
- P := Pos('=', Languages.Strings[I]);
- L := Copy(Languages.Strings[I], 0, P - 1);
- S := Copy(Languages.Strings[I], P + 1, Length(Languages.Strings[I]) - P);
- LangCombo.Items.Add(S);
- if L = ActiveLanguage then
- LangCombo.ItemIndex := I;
- LangCombo.OnChange := @LangChange;
- end;
- if LanguageForm.ShowModal = mrOK then
- begin
- // Collect current instance parameters
- for I := 1 to ParamCount do
- begin
- S := ParamStr(I);
- // Unique log file name for the elevated instance
- if CompareText(Copy(S, 1, 5), '/LOG=') = 0 then
- begin
- S := S + '-localized';
- end;
- // Do not pass our /SL5 switch
- if CompareText(Copy(S, 1, 5), '/SL5=') <> 0 then
- begin
- Params := Params + AddQuotes(S) + ' ';
- end;
- end;
- L := Languages.Strings[LangCombo.ItemIndex];
- P := Pos('=', L);
- L := Copy(L, 0, P-1);
- // ... and add selected language
- Params := Params + '/LANG=' + L;
- Instance := ShellExecute(0, '', ExpandConstant('{srcexe}'), Params, '', SW_SHOW);
- if Instance <= 32 then
- begin
- MsgBox(
- Format('Running installer with selected language failed. Code: %d', [Instance]),
- mbError, MB_OK);
- end;
- end;
- end;
- function InitializeSetup(): Boolean;
- var
- Language: string;
- begin
- Result := True;
- Language := ExpandConstant('{param:LANG}');
- if Language = '' then
- begin
- Log('No language specified, showing language dialog');
- SelectLanguage();
- Result := False;
- Exit;
- end
- else
- begin
- Log('Language specified, proceeding with installation');
- end;
- end;
- procedure RedesignWizardForm;
- begin
- with WizardForm do
- begin
- BorderIcons:=[];
- Bevel1.Hide;
- AutoScroll := False;
- ClientHeight := ScaleY(349);
- end;
- with WizardForm.CancelButton do
- begin
- Top := ScaleY(319);
- end;
- with WizardForm.NextButton do
- begin
- Top := ScaleY(319);
- end;
- with WizardForm.BackButton do
- begin
- Top := ScaleY(319);
- end;
- with WizardForm.WizardBitmapImage do
- begin
- Width := ScaleX(500);
- end;
- with WizardForm.WelcomeLabel2 do
- begin
- Visible := False;
- end;
- with WizardForm.WelcomeLabel1 do
- begin
- Visible := False;
- end;
- with WizardForm.WizardSmallBitmapImage do
- begin
- Left := ScaleX(0);
- Width := ScaleX(500);
- Height := ScaleY(60);
- end;
- with WizardForm.PageDescriptionLabel do
- begin
- Visible := False;
- end;
- with WizardForm.PageNameLabel do
- begin
- Visible := False;
- end;
- with WizardForm.WizardBitmapImage2 do
- begin
- Width := ScaleX(500);
- ExtractTemporaryFile('WizardForm.WizardBitmapImage2.bmp');
- Bitmap.LoadFromFile(ExpandConstant('{tmp}WizardForm.WizardBitmapImage2.bmp'));
- end;
- with WizardForm.FinishedLabel do
- begin
- Visible := False;
- end;
- with WizardForm.FinishedHeadingLabel do
- begin
- Visible := False;
- end;
- end;
- procedure InitializeWizard1();
- begin
- RedesignWizardForm;
- WizardForm.DiskSpaceLabel.Visible := False;
- end;
- procedure InitializeWizard2();
- begin
- ExtractTemporaryFile('BASS.dll');
- ExtractTemporaryFile('CallbackCtrl.dll');
- ExtractTemporaryFile('botva2.dll');
- ExtractTemporaryFile('MusicButton.png');
- ExtractTemporaryFile('Music.mp3');
- BASS_Init('{tmp}Music.mp3')
- BASS_CreateOnOffButton(WizardForm, '{tmp}MusicButton.png', 20, 320, 36, 36, 4)
- end;
- procedure InitializeWizard();
- begin
- InitializeWizard1();
- InitializeWizard2();
- end;
- procedure DeinitializeSetup();
- begin
- BASS_DeInit; //Îñâîáîæäàåì ïðîöåññ
- gdipShutdown
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement