下面是我用来为程序创建“开始菜单”快捷方式的代码,使用WiX工具集为我的程序创建安装程序。
<DirectoryRef Id="ApplicationProgramsFolder">
<Component Id="VDiskShortcut" Guid="">
<File Id="VDiskExe" DiskId="1" Source="..\..\..\bin\vdisk.exe"/>
<Shortcut Id="VDiskStartMenuShortcut"
Name="Virtual Disk" Show="minimized"
Description="Virtual Disk"
Target="[#VDiskExe]"
WorkingDirectory="MYBIN"/>
<RegistryValue Root="HKCU" Key="Software\Microsoft\VDisk" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
</Component>
</DirectoryRef>
当我安装程序时,我发现在“开始”菜单上创建了两个菜单项。一个被称为&#34;虚拟磁盘&#34;另一个名为&#34; vdisk.exe&#34;。为什么WiX安装程序会这样做?是因为这是Target元素中程序的名称吗?如果是这种情况,如何指定快捷方式的名称而不使其与目标名称混淆?我只想在“开始”菜单中选择一个菜单项,其名称应该是我在WiX中的快捷方式元素上指定的名称,但这似乎不起作用。
答案 0 :(得分:0)
我按照FireGiant WiX教程中的示例修复了问题。它工作正常,但是当我构建安装程序时,我仍然会收到来自灯光的警告消息。警告信息是
warning LGHT1076: ICE69: Mismatched component reference.
Entry 'VDiskStartMenuShortcut' of the Shortcut table belongs to
component 'VDiskShortcut'. However, the formatted string in column 'Target'
references file 'vdisk.exe' which belongs to component 'vdisk.exe'.
Components are in the same feature.
结果就是我想要的,所以我想我愿意接受警告信息。
答案 1 :(得分:0)
您在开始菜单中看到两个项目,因为您在ProgramMenuFolder下安装了两个项目:一个exe文件,以及一个快捷方式。
请注意,Shortcut元素的Directory属性允许您将快捷方式安装到其组件的主要位置以外的位置。因此,解决这个问题的一种方法是将目标定位在APPLICATIONROOTDIRECTORY
(或类似的 - 是MYBIN
给你?)而不是ApplicationProgramsFolder
。这将在ProgramFilesFolder下安装vdisk.exe而不是ProgramMenuFolder,因此它不会出现在开始菜单中。然后在快捷方式上指定Directory="ApplicationProgramsFolder"
。