每个功能的快捷方式

时间:2015-11-20 20:20:54

标签: wix

我正在编写一个包含根功能和三个嵌套功能的安装程序:

<Feature Id="FEATURE_BasicLibraries" Title="Basic Libraries" Level="1">
  <ComponentGroupRef Id="CG_RequiredLibraries" />
  <ComponentRef Id="CMP_Shortcuts" />

  <Feature Id="FEATURE_App1" Title="App1" Level="1">
    <ComponentGroupRef Id="CG_App1" />
  </Feature>

  <Feature Id="FEATURE_App2" Title="App2" Level="1">
    <ComponentGroupRef Id="CG_App2" />
  </Feature>

  <Feature Id="FEATURE_App3" Title="App3" Level="1">
    <ComponentGroupRef Id="CG_App3" />
  </Feature>
</Feature>

每个嵌套功能都包含一个exe文件,该文件表示该功能安装的应用程序。根功能只是一组必要的Dll。

我愿意在开始菜单中创建三个快捷方式。我是这样做的:

<DirectoryRef Id="ShortcutsFolder">
  <Component Id="CMP_Shortcuts" Guid="378C7AC2-9FA0-4895-A3A1-E7526B673BB4">
    <Shortcut Id="App1MenuShortcut" Name="App1" Target="[InstallFolder]App1.exe"/>
    <Shortcut Id="App2MenuShortcut" Name="App2" Target="[InstallFolder]App2.exe"/>
    <Shortcut Id="App3MenuShortcut" Name="App3" Target="[InstallFolder]App3.exe"/>
    <Shortcut Id="UninstallShortcut" Name="Uninstall" Target="[SystemFolder]\msiexec.exe" Arguments="/x [ProductCode]" />

    <RemoveFolder Id="RemoveShortcutsFolder" On="uninstall"/>
    <RegistryValue Root="HKCU" Key="Software\AppSuite" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
  </Component>
</DirectoryRef>

当我安装我的产品时,无论我选择哪种功能,我都会看到所有三个快捷方式(实际上是四个,包括卸载)。如何使安装程序仅为已安装的功能创建快捷方式?

我看到的唯一解决方案是为每个快捷方式创建多个组件。解决方案是直接的,但我需要在每个组件内部创建三个<RegistryValue>标签。在这种情况下如何处理<RemoveFolder>标签?

还有其他解决方案吗?

感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:0)

为每个快捷方式创建一个组件。 Windows Installer没有&#34; partial&#34;组件。每个组件都可以有自己的RemoveFolderRegistryValue条目。