使用WiX创build桌面快捷方式

所以我有Wix这个安装项目,并希望在桌面上有一个快捷方式。 这一定很容易,你可能会想。 但事实并非如此。 所有在互联网上find的代码片段都不起作用。 经过几个小时的努力和阅读文件,我终于明白了,所以我在这里与你分享。

快捷方式是非广告的,希望这有助于某人。 记住把组件放在你的feature标签中。

<Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="DesktopFolder" Name="Desktop"> <Component Id="ApplicationShortcutDesktop" Guid="*"> <Shortcut Id="ApplicationDesktopShortcut" Name="Text under your icon" Description="Comment field in your shortcut" Target="[MYAPPDIRPROPERTY]MyApp.exe" WorkingDirectory="MYAPPDIRPROPERTY"/> <RemoveFolder Id="DesktopFolder" On="uninstall"/> <RegistryValue Root="HKCU" Key="Software/MyAppName" Name="installed" Type="integer" Value="1" KeyPath="yes"/> </Component> </Directory> <Directory Id="ProgramFilesFolder" Name="PFiles"> <Directory Id="MyCompany" Name="MyCompany"> <Directory Id="MYAPPDIRPROPERTY" Name="MyAppName"> <!-- main installation files --> </Directory> </Directory> </Directory> </Directory> 

我认为我的方式更容易,不需要您创buildregistry项:

 <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="DesktopFolder" SourceName="Desktop" /> <Directory Id="MergeRedirectFolder"> <Component Id="MyExeComponent" Guid="{PUT-GUID-HERE}"> <File Id="MyExeFile" Source="$(var.ExeSourcePath)" KeyPath="yes"> <Shortcut Id="DesktopShortcut" Directory="DesktopFolder" Name="$(var.ShortcutName)" WorkingDirectory="MergeRedirectFolder" /> </File> </Component> </Directory> </Directory> 

谢谢你的例子。 在WIX 3.8中,它仍然提出:“错误3 ICE43:组件…具有未公布的快捷方式,它应该使用HKCU下的registry项作为其KeyPath,而不是文件。

所以我在具有以下特征的文件中这样做了:

  <Component Id="cmp79F6D61F01DD1060F418A05609A6DA70" Directory="dirBin" Guid="*"> <File Id="fil34B100315EFE9D878B5C2227CD1454E1" KeyPath="yes" Source="$(var.SourceDir)\FARMS.exe" > <Shortcut Id="DesktopShortcut" Directory="DesktopFolder" Name="FARMS $(var.FarmsVersion)" Description="Local Land Services desktop application" WorkingDirectory="INSTALLFOLDER" Icon="FARMS.exe" IconIndex="0" Advertise="yes" > <Icon Id="FARMS.exe" SourceFile="$(var.SourceDir)\FARMS.exe" /> </Shortcut> </File> </Component> 

并提到在产品定义的文件中的桌面文件夹:

  <Fragment> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="DesktopFolder" Name="Desktop" /> <Directory Id="ProgramFilesFolder"> <Directory Id="INSTALLFOLDER" Name="FARMS" > </Directory> </Directory> </Directory> </Fragment> 

经过太多的努力,我用这种方式:

 <Product ...> <Feature Id="ProductFeature" Title="SetupProject" Level="1"> ... ... <ComponentRef Id="cmpDesktopShortcut" /> </Feature> <Component Id="cmpDesktopShortcut" Guid="PUT-GUID-HERE" Directory="DesktopFolder" > <Shortcut Id="MyDesktopShortcut" Name="Setup Project" Description="Opens the program." Directory="DesktopFolder" Target="[INSTALLFOLDER]App.exe" WorkingDirectory="INSTALLFOLDER"/> <RegistryValue Root="HKCU" Key="Software\My Company\Sample Application" Name="installed" Type="integer" Value="1" KeyPath="yes" /> </Component> </Product> 

在这个文档中似乎更容易。

首先,你必须指出你的DesktopFolder,

  <Fragment> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="DesktopFolder" Name="Desktop"/> 

然后,您应该创build快捷方式组件为您要创build快捷方式的文件。

  <Component Id="PutYourComponentIdHere" Directory="FileDirectory" Guid="*"> <File Id="NotYourComponentId" KeyPath="yes" Source="..\YourFileSource\YourExecutable.exe"> <Shortcut Id="desktopServer" Directory="DesktopFolder" Name="YourShourtcutName" WorkingDirectory='WhereShouldYourShortcutPoint' Advertise="yes"/> </File> </Component> 

它为我工作。 我需要把图标,但这很容易的一部分。 希望它的作品。