IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Delphi Discussion :

[Inno Setup] Group et/ou Icon par utilisateur ou tous les comptes Windows


Sujet :

Contribuez Delphi

  1. #1
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 : 984
    Points : 1 418
    Points
    1 418
    Par défaut [Inno Setup] Group et/ou Icon par utilisateur ou tous les comptes Windows
    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 :
    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;
    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
    //  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 : 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;
    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.

  2. #2
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Bonjour

    J'aimerai avoir plus d'explication sur la mise en place de l’icône.

    1) Où on définit quelle icône prendre.
    2) L'explication des trois lignes de la section icons
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/01/2009, 11h59
  2. Réponses: 1
    Dernier message: 30/11/2008, 11h27
  3. optimiser code sql access par boucle sur tous les chkbox
    Par thiefer dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 25/09/2008, 22h46
  4. Réponses: 25
    Dernier message: 19/08/2008, 12h41
  5. Réponses: 9
    Dernier message: 01/07/2006, 21h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo