如何为所有用户安装程序快捷方式?
我使用Windows安装程序XML工具包创建安装程序msi文件。安装创建的msi文件时,放置在ProgramMenuFolder文件夹下的快捷方式仅为管理员用户提供了一个快捷方式。如何让安装程序在“所有用户”配置文件下创建快捷方式,以便机器上的每个人都拥有快捷方式?如何为所有用户安装程序快捷方式?
斯图尔特普雷斯顿的博客对如何做一个很好的说明:
Installing a shortcut for "All Users" (via Wayback Machine)
编辑:
Synopsys的是:
在你.wxs文件,包括以下内容:
<Property Id="ALLUSERS"><![CDATA[2]]></Property>
这将预设一个属性,模拟选择 “所有用户”而不是“Just Me”的行为。你会 需要类似的目录结构如下太:
<Directory Id='ProgramMenuFolder' Name='PMenu' LongName='Programs'> <Directory Id='MyProductShortcutDir' Name='MyPMenu' LongName='MyProduct' /> </Directory>
最后,您的快捷方式应该是一个“文件”元素中,如下所示:
<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>
简单定义ALLUSERS = 1强制每机器安装。
<Property Id="ALLUSERS"><![CDATA[1]]></Property>
您应该使用InstallScope ='perMachine'而不是 – 2009-04-30 20:43:16
这不就是设置ALLUSERS属性吗?至少这就是文件中指出的那样.. – saschabeaumont 2009-05-01 00:28:50
根据在维克斯教程http://www.tramontana.co.hu/wix/lesson1.php的SampleFirst.wxs有两个部分,我改变。
首先,添加属性ALLUERS = 1“”。如其他人所指出的那样,这将安装所有用户配置文件的快捷方式。
其次,将Component'ProgramMenuDir'的注册表值的根目录更改为HKMU。安装程序将根据ALLUSERS属性决定在安装时是应该使用HKLM(本地计算机)还是HKCU(当前用户)。
然后,您应该能够添加对话框来修改ALLUSERS属性,注册表根相应地发生更改。
<?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>
当你这样做时,你不必担心ALLUSERS属性。将InstallScope设置为'perMachine'会自动将ALLUSERS设置为1. – RaceRalph 2016-08-12 14:19:33