Bonjour, je vous propose deux petits exemples qui permettent de créer des icônes et les raccourcis du menu démarrer pour l'utilisateur en cours ou pour tous.
Par défaut lorsque l'on crée un nouveau script en utilisant l'assistant de Inno Setup et que l'ont choisit de créer une icône sur le bureau celle-ci est créée pour tous les utilisateurs de l'ordinateur.
A contrario les raccourcis du menu démarrer sont créés pour l'utilisateur actuel sauf si le setup est exécuté avec les droits administrateurs dans ce cas cela crée les raccourcis pour tous les utilisateurs.
On peut bien sûr simplement changer les variables pour créer les raccourcis seulement pour l'utilisateur actuel, mais il est quand même plus sympa de proposer à l'utilisateur de choisir.
Si vous avez installé QuickStart Pack (C'est-à-dire Inno Setup avec l'option Inno Préprocesseur) à l'emplacement par défaut cela devrait compiler sur Windows XP. Pour les autres il faut changer les emplacements.
Voici la première version qui propose seulement de créer l'icône du bureau tous les utilisateurs :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| ; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "My Program"
#define MyAppVersion "1.5"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "MyProg.exe"
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{4246FAE4-A90C-4FBC-B5EA-F2D5236FD7B9}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "french"; MessagesFile: "compiler:Languages\French.isl"
[CustomMessages]
cmIconForAllUser=Create desktop icon for all Windows user
french.cmIconForAllUser=Créer une icône sur le bureau pour tous les utilisateurs Windows
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1
[Files]
Source: "C:\Program Files\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon
Name: "{code:PathIcon}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
[Code]
var
cbIconForAllUser: TNewCheckBox;
procedure InitializeWizard();
begin
cbIconForAllUser := TNewCheckBox.Create(WizardForm);
cbIconForAllUser.Parent := WizardForm.SelectTasksPage;
cbIconForAllUser.Left := WizardForm.NoIconsCheck.Left;
cbIconForAllUser.Top := WizardForm.NoIconsCheck.Top;
cbIconForAllUser.Width := 350;
cbIconForAllUser.Caption := ExpandConstant('{cm:cmIconForAllUser}');
// cbIconForAllUser.Checked := True;
end;
Function PathIcon(Path: String): String;
begin
if cbIconForAllUser.Checked then
Result := ExpandConstant('{commondesktop}}')
else
Result := ExpandConstant('{{userdesktop}}');
end; |
Il suffit de décommenter la ligne suivante pour proposer par défaut à l'utilisateur de créer l'icône pour tous les utilisateurs.
// cbIconForAllUser.Checked := True;
Voici la version qui propose de créer icônes et raccourcies du menu démarrer pour l'utilisateur en cours ou pour tous :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
| ; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "My Program"
#define MyAppVersion "1.5"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "MyProg.exe"
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{BBB395F8-FB36-4BEE-B217-C79466ECB486}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "french"; MessagesFile: "compiler:Languages\French.isl"
[CustomMessages]
cmIconForAllUser=Create desktop icon for all Windows user
french.cmIconForAllUser=Créer une icône sur le bureau pour tous les utilisateurs Windows
cmGroupIconForAllUser=Create Start Menu foler for all Windows user
french.cmGroupIconForAllUser=Créer le dossier dans le menu Démarrer pour tous les utilisateurs Windows
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1
[Files]
Source: "C:\Program Files\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
[Icons]
Name: "{code:PathGroupIcon|{group}}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon
;
Name: "{code:PathIcon}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
[Code]
var
cbIconForAllUser: TNewCheckBox;
cbGroupIconForAllUser: TNewCheckBox;
FNoIconsCheckOnClick: TNotifyEvent;
procedure NewNoIconsCheckOnClick(Sender: TObject);
begin
cbGroupIconForAllUser.Enabled := not WizardForm.NoIconsCheck.Checked;
FNoIconsCheckOnClick(Sender);
end;
procedure CreateCheckBox;
begin
cbIconForAllUser := TNewCheckBox.Create(WizardForm);
cbIconForAllUser.Parent := WizardForm.SelectTasksPage;
cbIconForAllUser.Left := WizardForm.NoIconsCheck.Left;
cbIconForAllUser.Top := WizardForm.NoIconsCheck.Top;
cbIconForAllUser.Width := 400;
cbIconForAllUser.Caption := ExpandConstant('{cm:cmIconForAllUser}');
// cbIconForAllUser.Checked := True;
cbGroupIconForAllUser := TNewCheckBox.Create(WizardForm);
cbGroupIconForAllUser.Parent := WizardForm.SelectProgramGroupPage;
cbGroupIconForAllUser.Left := WizardForm.NoIconsCheck.Left;
cbGroupIconForAllUser.Top := WizardForm.NoIconsCheck.Top - 20;
cbGroupIconForAllUser.Width := 400;
cbGroupIconForAllUser.Caption := ExpandConstant('{cm:cmGroupIconForAllUser}');
// cbGroupIconForAllUser.Checked := True;
FNoIconsCheckOnClick := WizardForm.NoIconsCheck.OnClick;
WizardForm.NoIconsCheck.OnClick := @NewNoIconsCheckOnClick;
end;
procedure InitializeWizard();
begin
CreateCheckBox;
end;
Function PathIcon(Path: String): String;
begin
if cbIconForAllUser.Checked then
Result := ExpandConstant('{commondesktop}}')
else
Result := ExpandConstant('{{userdesktop}}');
end;
Function PathGroupIcon(Path: String): String;
begin
if cbGroupIconForAllUser.Checked then
StringChangeEx(Path, ExpandConstant('{userstartmenu}'), ExpandConstant('{commonstartmenu}'), True)
else
StringChangeEx(Path, ExpandConstant('{commonstartmenu}'), ExpandConstant('{userstartmenu}'), True);
Result := Path;
end; |
par défaut on obtient donc un setup qui installe les icônes que pour l'utilisateur en cours sauf si l'utilisateur coche les cases correspondantes.
Même chose que pour l'exemple précédent il suffit de décommenter les deux lignes pour obtenir par défaut un setup qui installe les icônes et raccourcis pour tous les utilisateurs par défaut. que le setup soit lancée avec les droits administrateurs ou non.
Je dois vous prévenir je n'ai pas testé sur Windows Seven de créer les raccourcis sur tous les comptes en exécutant le setup sans les droits administrateurs sur un compte limité.
Partager