快捷方式父目录出现WiX Ice64错误



我正试图使用WiX为应用程序创建一个开始菜单快捷方式,问题是我收到了一个Ice64错误,指出快捷方式目录的父目录不在RemoveFile表中。

我不想在卸载时删除这个父文件夹(组织文件夹),因为其他应用程序可能在它的其他子文件夹中有快捷方式。

我的代码看起来像

<Feature Id="ProductFeature" Title="MyApplication" Level="1">
  <ComponentGroupRef Id="Components" />
  <ComponentRef Id="ProfilesShortcut"/>
</Feature>
 <Fragment>
  <Directory Id="TARGETDIR" Name="SourceDir">
   <Directory Id="ProgramFilesFolder">
    <Directory Id="OrgDir" Name="OrganisationName">
      <Directory Id="AppDir" Name="MyApplication" />
    </Directory>
   </Directory>
   <Directory Id="ProgramMenuFolder">
    <Directory Id="ProgFilesOrgDir" Name="OrganisationName">
      <Directory Id="ProgFilesAppDir" Name="MyApplication" />
    </Directory>
   </Directory>
  </Directory>
</Fragment>
<Fragment>
 <DirectoryRef Id="ProgFilesAppDir">
  <Component Id="ProfilesShortcut" Guid="*">
    <Shortcut Id="ApplicationStartMenuShortcut"
                 Name="MyApplication"
               Description="My Application"
                Target="[#MyApplication.exe]"
                      WorkingDirectory="AppDir"/>
    <RemoveFolder Id="ProgFilesAppDir" On="uninstall"/>
    <RegistryValue Root="HKCU" Key="SoftwareOrganisationMyApplication" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
  </Component>
 </DirectoryRef>
</Fragment>

可以随意将remove-file元素添加到快捷方式组件中。

如果选择安装或删除父组件,请删除空文件夹。

RemoveFolder元素将只删除空文件夹,因此,如果您的产品不是该套件中唯一安装的部分,它将保留父文件夹,因为其他产品将在那里放置文件/文件夹。考虑这样一种情况,即您的产品是唯一安装的产品(应删除文件夹),或者是最后一个从套件中卸载的产品(应该删除文件夹)。在这两种情况下,文件夹应该被删除。RemoveFolder元素的定义顺序可能很重要,所以我会测试将ProgramFilesOrgFolder元素放在ProgFilesAppDir remove元素之前和之后,看看其中一个是否失败。

或者,您可以直接取消ICE64,但一旦卸载了所有产品,就会留下一个文件夹。这不是什么大不了的事,但可能会让一些用户感到讨厌。

最新更新