如何使用 WiX 在 Windows“开始”菜单中创建子文件夹(几级深)?
目前,我可以将快捷方式放在“开始”菜单中,但只能放在“程序”正下方的文件夹中(“开始”/“程序”/“MyFolder”),但我想将快捷方式嵌套得更深(“开始”/“程序”/MyPlatform/MyProduct/等) .)。我尝试了不同的组合,但可惜。
<DirectoryRef Id="StartMenuMyProduct">
<Component Id="ApplicationShortcut" Guid="{PUT-SOME-GUID-HERE}">
<Shortcut Id="ApplicationStartMenuShortcut"
Name="Configure My Product"
Description="Add or remove this and that"
Target="[MYPRODUCTDIR]ConfigureMyProduct.exe"
WorkingDirectory="MYPRODUCTDIR"/>
<RemoveFolder Id="StartMenuMyProduct"
On="uninstall"/>
<RemoveFolder Id="StartMenuMyPlatform"
On="uninstall"/>
<RegistryValue Root="HKCU"
Key="SOFTWARE\MyCompany\MyPlatform\My Product"
Name="Installed"
Type="integer"
Value="1"
KeyPath="yes"/>
</Component>
</DirectoryRef>
<!-- Shortcut to the configuration utility in the Windows Start menu -->
<Directory Id="ProgramMenuFolder">
<!--<Directory Id="StartMenuMyPlatform" Name="MyPlatform">-->
<Directory Id="StartMenuMyProduct" Name="My Product" />
<!--</Directory>-->
</Directory>
最佳答案
有趣的是 MSI 要求创建一个注册表值来检测组件是否已安装。如果我们希望为所有快捷方式只创建一个这样的注册表值,那么我们必须将所有快捷方式放在一个组件中。
幸运的是,可以通过使用 Shortcut element 上的 Directory 属性来创建跨多个目标目录的组件。 。
<!-- shortcuts to applications in the start menu -->
<DirectoryRef Id="ProgramMenuProductFolder">
<Component Id="ProgramMenuShortcutsComponent" Guid="PUT-GUID-HERE">
<!-- create folders -->
<CreateFolder Directory="ProgramMenuVendorFolder" />
<CreateFolder Directory="ProgramMenuProductFolder" />
<CreateFolder Directory="ProgramMenuSubFolder" />
<!-- remove folder -->
<RemoveFolder Id="RemoveProgramMenuVendorFolder"
Directory="ProgramMenuVendorFolder"
On="uninstall" />
<RemoveFolder Id="RemoveProgramMenuProductFolder"
Directory="ProgramMenuProductFolder"
On="uninstall" />
<RemoveFolder Id="RemoveProgramMenuProductSubFolder"
Directory="ProgramMenuProductSubFolder"
On="uninstall" />
<!-- main shortcut -->
<Shortcut
Id="MainShortcut"
Name="My Product"
Target="[SomeInstalledFolder]app1.exe" />
<!-- shortcut in subfolder -->
<Shortcut
Id="SubFolderShortcut"
Name="mySubFolderShortcut"
Target="[SomeInstalledFolder]app2.exe"
Directory="ProgramMenuProductSubFolder" />
<!--
RegistryValue whichs serves as KeyPath
-->
<RegistryValue
Root="HKCU"
Key="Software\MyVendor\MyProduct"
Name="InstalledStartMenuShortcuts"
Type="integer"
Value="1" />
</Component>
</DirectoryRef>
<!-- shortcut directories -->
<Directory Id="ProgramMenuFolder">
<Directory Id="ProgramMenuVendorFolder" Name="MyVendor">
<Directory Id="ProgramMenuProductFolder" Name="MyProduct">
<Directory Id="ProgramMenuProductSubFolder" Name="MySubFolder" />
</Directory>
</Directory>
</Directory>
关于installation - 如何使用 WiX 在开始菜单中创建多级子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/470662/