2010-07-09 19 views
14

Inno Setup'ı kullanıyorum (şaşırtıcı!). Yükleyiciyi kişiselleştirmeyi umuyordum, böylece kullanıcıdan bir giriş alanı biçiminde bir dize kabul edebilir ve belki de ona bir mesaj ekleyebilirim.Inno Kurulumu: Bir Özel Giriş Alanı Ekleme

Bunu nasıl yapabilirim? Dokümanlara bir göz attım, google arama ve fazla gelmedi! Bütün herhangi bir yardım

+0

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

+0

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 /) –

cevap

34

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.

+1

Örnek için teşekkürler, gerçekten yardımcı oluyor! Sadece bir son şey, kullanıcı tarafından girilen şeyi nasıl yakalarım? Daha sonra kayıt defteri anahtarına yazdığımda değişken olması için kullanabilirim. – Abs

+0

EDIT 2 ... :-) –

+3

omg konusuna bakın, çok teşekkür ederim! +1 yeterli değil. Bu soruyu görenler için ona biraz lanet olsun! :) – Abs

İlgili konular