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 :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
Voici la version qui propose de créer icônes et raccourcies du menu démarrer pour l'utilisateur en cours ou pour tous :
Code : Sélectionner tout - Visualiser dans une fenêtre à part // cbIconForAllUser.Checked := True;
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
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