Sen yükleyici için yeni sayfalar oluşturmak için InnoSetup Pascal komut dosyası kullanabilirsiniz için
teşekkürler. Bu sayfalar normal kurulum akışına entegre edilebilir. Bu, InnoSetup documentation (Google arama da örneklerle birlikte gelmelidir) içinde belgelenmiştir. Ayrıca Program Files \ InnoSetup içindeki Samples klasöründe bazı kod örnekleri vardır.
Bir süre önce, siz de sayfayı görsel olarak tasarlamanıza izin veren InnoSetup Form tasarımcısı adlı bir yazılım vardı. Bağlantı hala var, ancak sayfada indirmeyi bulamadım. Belki biraz etrafına bakarsanız onu bulabilirsin?
DÜZENLEME
Bu keresinde yapılan bir sayfa için bir örnektir. . Bu ISS dosyasının kod bölümüdür [Code]
var
EnableFolderPage: Boolean;
lblBlobFileFolder: TLabel;
lblBlobFileWarning1: TLabel;
lblBlobFileWarning2: TLabel;
tbBlobFileFolder: TEdit;
btnBlobFileFolder: TButton;
function GetBlobFolder(param: String): String;
begin
Result := Trim(tbBlobFileFolder.Text);
end;
{ BlobFileForm_Activate }
procedure BlobFileForm_Activate(Page: TWizardPage);
var
s: string;
begin
s := Trim(tbBlobFileFolder.Text);
if (s = '') then
begin
tbBlobFileFolder.Text := ExpandConstant('{sys}');
end;
end;
{ BlobFileForm_NextButtonClick }
function BlobFileForm_NextButtonClick(Page: TWizardPage): Boolean;
var
s: string;
begin
s := Trim(tbBlobFileFolder.Text);
if (s = '') then
begin
MsgBox(ExpandConstant('{cm:BlobFileForm_NoFolder}'), mbError, MB_OK);
Result := false;
end else
begin
if not DirExists(s) then
begin
MsgBox(ExpandConstant('{cm:BlobFileForm_DirDoesntExist}'), mbError, MB_OK);
Result := false;
end else
begin
Result := True;
end;
end;
end;
procedure btnBlobFileFolder_Click(sender: TObject);
var
directory: string;
begin
if BrowseForFolder('', directory, true) then
begin
tbBlobFileFolder.Text := directory;
end;
end;
{ BlobFileForm_CreatePage }
function BlobFileForm_CreatePage(PreviousPageId: Integer): Integer;
var
Page: TWizardPage;
begin
Page := CreateCustomPage(
PreviousPageId,
ExpandConstant('{cm:BlobFileForm_Caption}'),
ExpandConstant('{cm:BlobFileForm_Description}')
);
{ lblBlobFileFolder }
lblBlobFileFolder := TLabel.Create(Page);
with lblBlobFileFolder do
begin
Parent := Page.Surface;
Caption := ExpandConstant('{cm:BlobFileForm_lblBlobFileFolder_Caption0}');
Left := ScaleX(8);
Top := ScaleY(8);
Width := ScaleX(167);
Height := ScaleY(13);
end;
{ lblBlobFileWarning1 }
lblBlobFileWarning1 := TLabel.Create(Page);
with lblBlobFileWarning1 do
begin
Parent := Page.Surface;
Caption := ExpandConstant('{cm:BlobFileForm_lblBlobFileWarning1_Caption0}');
Left := ScaleX(8);
Top := ScaleY(80);
Width := ScaleX(50);
Height := ScaleY(13);
Font.Color := -16777208;
Font.Height := ScaleY(-11);
Font.Name := 'Tahoma';
Font.Style := [fsBold];
end;
{ lblBlobFileWarning2 }
lblBlobFileWarning2 := TLabel.Create(Page);
with lblBlobFileWarning2 do
begin
Parent := Page.Surface;
Caption :=
ExpandConstant('{cm:BlobFileForm_lblBlobFileWarning2_Caption0}') + #13 +
ExpandConstant('{cm:BlobFileForm_lblBlobFileWarning2_Caption1}') + #13 +
ExpandConstant('{cm:BlobFileForm_lblBlobFileWarning2_Caption2}') + #13 +
ExpandConstant('{cm:BlobFileForm_lblBlobFileWarning2_Caption3}') + #13 +
ExpandConstant('{cm:BlobFileForm_lblBlobFileWarning2_Caption4}');
Left := ScaleX(8);
Top := ScaleY(96);
Width := ScaleX(399);
Height := ScaleY(133);
AutoSize := False;
WordWrap := True;
end;
{ tbBlobFileFolder }
tbBlobFileFolder := TEdit.Create(Page);
with tbBlobFileFolder do
begin
Parent := Page.Surface;
Left := ScaleX(8);
Top := ScaleY(24);
Width := ScaleX(401);
Height := ScaleY(21);
TabOrder := 0;
end;
{ btnBlobFileFolder }
btnBlobFileFolder := TButton.Create(Page);
with btnBlobFileFolder do
begin
Parent := Page.Surface;
Caption := ExpandConstant('{cm:BlobFileForm_btnBlobFileFolder_Caption0}');
Left := ScaleX(320);
Top := ScaleY(48);
Width := ScaleX(91);
Height := ScaleY(23);
TabOrder := 1;
end;
with Page do
begin
OnActivate := @BlobFileForm_Activate;
OnNextButtonClick := @BlobFileForm_NextButtonClick;
end;
with btnBlobFileFolder do
begin
OnClick := @btnBlobFileFolder_Click;
end;
Result := Page.ID;
end;
procedure InitializeWizard();
begin
BlobFileForm_CreatePage(wpSelectDir);
end;
DÜZENLEME 2
kullanıcı bir kayıt defteri anahtarına Girilen değeri yazmak için, yeni bir işlev oluşturun:
function GetUserEnteredText(param: String): String;
begin
Result := Trim(tbTextBox.Text);
end;
Bu işlev sadece metin kutusuna girilen şeyi döndürür. Lütfen fonksiyonun bir dizi parametresini alması gerektiğini unutmayın - bunu görmezden gelseniz bile! Senaryonuzun [Registry]
bölümünde
böyle yazılmalıdır anahtarı beyan: Bu HKLM \ SOFTWARE "MyValue" adlı bir kayıt defteri değerini oluşturur
Root: HKLM; Subkey: SOFTWARE\MyCompany\MyTool; ValueType: string; ValueName: MyValue; ValueData: {code:GetUserEnteredText}; Flags: createvalueifdoesntexist uninsdeletekeyifempty uninsdeletevalue
\ MyCompany \ MyTool içerdiğini neyi kullanıcı metin kutusuna girdi.
Bir süre benim isfd208.exe (InnoSetup Form Designer 2.08) bulmak için tüm sahte ve kırık bağlantılar boyunca wade sürdü. Thorsten'in söylediği gibi, orijinal link kırıldı ama [bu bir] (http://uploaded.to/file/swq33y) bu yorumun tarihine kadar çalışıyor. (Not: Windows 7'de çalışmıyor ama xp üzerinde çalışıyor) – Joe
Joe'nun linki de bozuk. İşte bir çalışan: [http://www.cenadep.org/2012/02/09/innosetup-form-designer/](http://www.cenadep.org/2012/02/09/innosetup- form-designer /) –