2009-04-15 8 views
9

Je crée un fichier msi du programme d'installation à l'aide de la boîte à outils Windows Installer XML. Lors de l'installation du fichier msi créé, un raccourci placé sous le dossier ProgramMenuFolder entraîne un raccourci pour l'utilisateur Administrateur uniquement. Comment puis-je laisser le programme d'installation créer un raccourci sous le profil Tous les utilisateurs, afin que tout le monde sur l'ordinateur dispose du raccourci?Comment installer des raccourcis de programme pour tous les utilisateurs?

Répondre

4

Stuart blog de Preston a une bonne description de la façon de le faire:

Installing a shortcut for "All Users" (via Wayback Machine)

Edit:

Les Synopsys:

Dans votre fichier .wxs, comprennent les éléments suivants:

<Property Id="ALLUSERS"><![CDATA[2]]></Property> 

Cela présélectionne une propriété qui imite le comportement de sélection "Tous les utilisateurs" plutôt que "Just Me" pour votre installation. Vous aurez besoin d'une structure de répertoire similaire à celui-ci aussi:

<Directory Id='ProgramMenuFolder' Name='PMenu' LongName='Programs'> 
<Directory Id='MyProductShortcutDir' Name='MyPMenu' LongName='MyProduct' /> 
</Directory> 

Enfin, votre raccourci devrait être dans un élément "Fichier", comme suit:

<File Id="MyProduct.File0" LongName="MyProduct.exe" Name="MYPROD_1.EXE" src="c:\MyProductSourceFolder\MyProduct.exe" > 
<Shortcut Id="MyProduct.Shortcut" Directory="MyProductShortcutDir" Name="MPSCUT" LongName="My Product Shortcut" /> 
</File> 
17

Dans le Package element, ajouter un attribut InstallScope comme ceci:

InstallScope='perMachine' 
+0

Lorsque vous faites cela, vous n'avez pas à vous soucier de la propriété ALLUSERS. Définir InstallScope sur 'perMachine' définit automatiquement ALLUSERS à 1. – RaceRalph

0

simple définir ALLUSERS = 1 pour forcer une installation par machine .

<Property Id="ALLUSERS"><![CDATA[1]]></Property> 
+2

Vous devez utiliser InstallScope = 'perMachine' à la place –

+0

Cela ne fait-il pas que définir la propriété ALLUSERS? Au moins, c'est ce qui est indiqué dans la documentation. – saschabeaumont

9

Sur la base des SampleFirst.wxs dans Wix Tutorial http://www.tramontana.co.hu/wix/lesson1.php il y avait deux parties que j'ai changé.

D'abord, ajoutez la propriété ALLUERS = 1 "". Cela installe le raccourci vers le profil de tous les utilisateurs, comme d'autres l'ont noté.

Deuxièmement, modifiez la racine pour la valeur de Registre pour le composant 'ProgramMenuDir' à HKMU. Le programme d'installation décidera s'il doit utiliser HKLM (machine locale) ou HKCU (utilisateur actuel) au moment de l'installation, en fonction de la propriété ALLUSERS.

Vous devriez alors pouvoir ajouter des boîtes de dialogue pour modifier la propriété ALLUSERS, la racine du registre étant modifiée en conséquence.

<?xml version="1.0" encoding="utf-8"?> 
<!-- Original Source available at "http://www.tramontana.co.hu/wix/download.php?file=samples/samplefirst.zip&type=application/zip" 
    This version has been modified for a local machine install (all users) vs a user install--> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Product Name="Foobar 1.0" Id="YOURGUID-CD32-4B20-BB4F-58A5C3B21A7C" UpgradeCode="YOURGUID-EDCE-42A2-9DA2-59FB08AC4FA6" Language="1033" Codepage="1252" Version="1.0.0" Manufacturer="Acme Ltd."> 
     <Package Id="*" Keywords="Installer" Description="Acme's Foobar 1.0 Installer" Comments="Foobar is a registered trademark of Acme Ltd." Manufacturer="Acme Ltd." InstallerVersion="100" Languages="1033" Compressed="yes" SummaryCodepage="1252" /> 
     <Media Id="1" Cabinet="Sample.cab" EmbedCab="yes" DiskPrompt="CD-ROM #1" /> 
     <Property Id="DiskPrompt" Value="Acme's Foobar 1.0 Installation [1]" /> 
     <Property Id="ALLUSERS" Value="1" /> 
     <Directory Id="TARGETDIR" Name="SourceDir"> 
      <Directory Id="ProgramFilesFolder" Name="PFiles"> 
       <Directory Id="Acme" Name="Acme"> 
        <Directory Id="INSTALLDIR" Name="Foobar 1.0"> 
         <Component Id="MainExecutable" Guid="YOURGUID-2191-4A98-806B-2554B0DD8FC3"> 
          <File Id="FoobarEXE" Name="FoobarAppl10.exe" DiskId="1" Source="FoobarAppl10.exe" KeyPath="yes"> 
           <Shortcut Id="startmenuFoobar10" Directory="ProgramMenuDir" Name="Foobar 1.0" WorkingDirectory="INSTALLDIR" Icon="Foobar10.exe" IconIndex="0" Advertise="yes" /> 
           <Shortcut Id="desktopFoobar10" Directory="DesktopFolder" Name="Foobar 1.0" WorkingDirectory="INSTALLDIR" Icon="Foobar10.exe" IconIndex="0" Advertise="yes" /> 
          </File> 
         </Component> 
         <Component Id="HelperLibrary" Guid="YOURGUID-7BA7-4BD1-90B9-C0DFC21674B1"> 
          <File Id="HelperDLL" Name="Helper.dll" DiskId="1" Source="Helper.dll" KeyPath="yes" /> 
         </Component> 
         <Component Id="Manual" Guid="YOURGUID-F60A-48D6-83FD-44ED01AA579A"> 
          <File Id="Manual" Name="Manual.pdf" DiskId="1" Source="Manual.pdf" KeyPath="yes"> 
           <Shortcut Id="startmenuManual" Directory="ProgramMenuDir" Name="Instruction Manual" Advertise="yes" /> 
          </File> 
         </Component> 
        </Directory> 
       </Directory> 
      </Directory> 
      <Directory Id="ProgramMenuFolder" Name="Programs"> 
       <Directory Id="ProgramMenuDir" Name="Foobar 1.0"> 
        <Component Id="ProgramMenuDir" Guid="YOURGUID-2D4F-443F-9ADA-563DB3C1581F"> 
         <RemoveFolder Id="ProgramMenuDir" On="uninstall" /> 
         <RegistryValue Root="HKMU" Key="Software\[Manufacturer]\[ProductName]" Type="string" Value="" KeyPath="yes" /> 
        </Component> 
       </Directory> 
      </Directory> 
      <Directory Id="DesktopFolder" Name="Desktop" /> 
     </Directory> 
     <Feature Id="Complete" Level="1"> 
      <ComponentRef Id="MainExecutable" /> 
      <ComponentRef Id="HelperLibrary" /> 
      <ComponentRef Id="Manual" /> 
      <ComponentRef Id="ProgramMenuDir" /> 
     </Feature> 
     <Icon Id="Foobar10.exe" SourceFile="FoobarAppl10.exe" /> 
     <UI /> 
    </Product> 
</Wix> 
+1

'HKMU' était apparemment l'incantation magique dont j'avais besoin aujourd'hui! –

1

Bob Arnson a une blog entry qui couvre comment configurer l'utilisateur par rapport à la machine à Wix.
La réponse rapide est de définir l'attribut InstallScope de l'élément Package sur "perMachine".

Questions connexes