Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Delphi > Contribuez
Contribuez Proposez vos articles, cours, tutoriels, FAQ, sources et autres ressources pour la rubrique Delphi.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 06/01/2011, 15h09   #1
ouiouioui
Membre Expert
 
Avatar de ouiouioui
 
Homme Alexandre
Administrateur systèmes et réseaux
Inscription : août 2006
Messages : 882
Détails du profil
Informations personnelles :
Nom : Homme Alexandre
Âge : 31
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Administrateur systèmes et réseaux
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : août 2006
Messages : 882
Points : 1 197
Points : 1 197
Envoyer un message via MSN à ouiouioui
Par défaut [Inno Setup] Group et/ou Icon par utilisateur ou tous les comptes Windows

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é.
__________________
Il existe 3 sortes de gens: ceux qui savent compter et ceux qui ne savent pas.
ouiouioui est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 23h49.


 
 
 
 
Partenaires

Hébergement Web