Bonjour, je vous propose deux petits exemples qui permette 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 choisi 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éer 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 :
Code :
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.
Code :
//  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 :
Code :
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é.