Comment installer des raccourcis de programmes pour tous les utilisateurs?
-
09-09-2019 - |
Question
Je crée un fichier msi d'installation en utilisant la boîte à outils Windows Installer XML. Lors de l'installation du fichier créé msi, un raccourci placé sous les résultats du dossier de ProgramMenuFolder dans un raccourci pour l'utilisateur Administrateur uniquement. Comment puis-je laisser l'installateur créer un raccourci sous le profil Tous les utilisateurs, de sorte que tout le monde sur la machine a le raccourci?
La solution
Stuart blog de Preston a une bonne description de la façon de le faire:
Installation d'un raccourci pour "Tous les utilisateurs" (via Wayback machine)
Modifier
Le Synopsys est:
Dans votre fichier .wxs, inclure ce qui suit:
<Property Id="ALLUSERS"><![CDATA[2]]></Property>
Cela prérégler une propriété qui imite le comportement de sélection les « Tous les utilisateurs » plutôt que « Just Me » pour votre installation. vous aurez besoin d'une structure de répertoire similaire à ce qui suit 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>
Autres conseils
Dans le élément paquet , ajoutez un attribut InstallScope comme ceci:
InstallScope='perMachine'
Sur la base des SampleFirst.wxs dans Wix Tutoriel 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 tous les profils que d'autres ont noté.
En second lieu, changer la racine de la valeur de Registre pour le composant « ProgramMenuDir » à HKMU. Le programme d'installation décidera si elle doit utiliser HKLM (Machine locale) ou HKCU (utilisateur actuel) lors de l'installation, sur la base de la propriété ALLUSERS.
Vous devriez alors être en mesure d'ajouter des boîtes de dialogue pour modifier la propriété ALLUSERS, avec la racine de Registre changer 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>
Bob Arnson a un entrée de blog qui couvre comment configurer l'utilisateur par rapport à la machine à Wix.
La réponse rapide est de définir InstallScope de l'élément paquet attribut à « perMachine ».
Simple définie ALLUSERS = 1 pour forcer une installation par machine.
<Property Id="ALLUSERS"><![CDATA[1]]></Property>