Vous pouvez utiliser des scripts Pascal InnoSetup pour créer de nouvelles pages pour l'installateur. Ces pages peuvent être intégrées dans le flux d'installation normal. Ceci est bien documenté dans l'InnoSetup documentation (recherche Google devrait également venir avec des échantillons). Le dossier Samples de votre programme Files \ InnoSetup contient également des exemples de code.
Il y a quelque temps, il existait un logiciel appelé InnoSetup Form Designer, qui vous permettait de concevoir visuellement la page. Le lien est toujours là, mais sur la page je n'ai pas pu trouver le téléchargement. Peut-être que si vous regardez autour d'un peu, vous pouvez le trouver?
EDIT
Ceci est un exemple pour une page que j'ai fait une fois. . Voici la section de code du fichier ISS [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;
EDIT 2
Pour écrire la valeur entrée par l'utilisateur à une clé de Registre, créez une nouvelle fonction:
function GetUserEnteredText(param: String): String;
begin
Result := Trim(tbTextBox.Text);
end;
Cette fonction renvoie simplement ce qui a été entré dans la zone de texte. S'il vous plaît noter que la fonction doit prendre un paramètre de chaîne - même si vous l'ignorez!
Dans la section [Registry]
de votre script, déclarer la clé qui devrait être écrit comme ça:
Root: HKLM; Subkey: SOFTWARE\MyCompany\MyTool; ValueType: string; ValueName: MyValue; ValueData: {code:GetUserEnteredText}; Flags: createvalueifdoesntexist uninsdeletekeyifempty uninsdeletevalue
Cela crée une valeur de registre « MyValue » dans HKLM \ SOFTWARE \ MyCompany \ MyTool qui contient ce que le utilisateur entré dans la zone de texte.
J'ai pris un moment pour parcourir tous les liens faux et brisés pour trouver le isfd208.exe (InnoSetup Form Designer 2.08). Comme Thorsten l'a dit, le lien original est cassé mais [celui-ci] (http://uploaded.to/file/swq33y) fonctionne à la date de ce commentaire. (Note: Il ne fonctionne pas sur Windows 7 mais fonctionne sur xp) – Joe
Le lien de Joe est également cassé. En voici une qui fonctionne: [http://www.cenadep.org/2012/02/09/innosetup-form-designer/](http://www.cenadep.org/2012/02/09/innosetup- form-designer /) –