1

我有一个 Internet Explorer 加载项,它在 LocalAppDataFolder\Microsoft\Windows\Temporary Internet Files\CompanyName\AddOnName\ 中生成一些文件

我有一个应用程序的 WIX 安装程序,我想在安装和卸载时删除 CompanyName\AddOnName\ 文件夹。

我以前从未使用过 WIX,而且我更喜欢 MacOS,所以所有这些东西对我来说都有点陌生。这是我现在拥有的一部分(在我的 Product.wxs 文件中):

<Feature Id="ProductFeature" Title="Company IE Add-On" Level="1" ConfigurableDirectory="INSTALLFOLDER">
  <ComponentRef Id="INSTALLFOLDER" />
  <ComponentGroupRef Id="ProductComponents" />
  <ComponentRef Id="dataDirectory"/>
</Feature>

<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="ProgramFilesFolder">
       <Directory Id="INSTALLFOLDER" Name="Company IE Add-On" >
          <Component Id="INSTALLFOLDER" Guid="THERE IS A GUID HERE">
          <RemoveFolder On="both" Id="INSTALLFOLDER"/>
          <RegistryValue Root="HKLM" Key="Software\[Manufacturer]\[ProductName]" Type="string" Value="Company IE Add-On" />
      </Component>
    </Directory>
  </Directory>
  <Directory Id="LocalAppDataFolder">
    <Directory Id="Microsoft">
      <Directory Id="Windows">
        <Directory Id="TempInetFiles" Name="Temporary Internet Files">
          <Directory Id="CompanyName">
            <Directory Id="AddOnName">
              <Component Id="dataDirectory" Guid="E5938D44-5315-43D4-94EC-313F6CDB290B" NeverOverwrite="no" Permanent="no">
                <RemoveFolder Id="AddOnName" On="both"/>
              </Component>
            </Directory>
          </Directory>
        </Directory>
      </Directory>
    </Directory>
  </Directory>
 </Directory>
</Fragment>

但这给了我诸如“组件数据目录安装到用户配置文件。它必须使用 HKCU 下的注册表项作为其 KeyPath,而不是文件”之类的错误。

并且“目录 CompanyName 在用户配置文件中,但未在 RemoveFile 表中列出。”

任何帮助将不胜感激。谢谢。

4

2 回答 2

0

我做了类似的事情,这段代码对我有用:

   <!--Setting up the shortcuts for the product-->
    <Directory Id="ProgramMenuFolder" Name="Programs">
    <Directory Id="ProgramMenuDir" Name="$(var.ShortcutName)">
      <Directory Id="ProgramMenuSubFolder" Name="LOGGERS">
      </Directory>
    </Directory>
  </Directory>
  </Directory>

 <Component Id='LoggersShortcut' Guid='2A6D411E-5CE9-4F38-8F25-361CBFCABB5A' Directory='ProgramMenuSubFolder'>
    <CreateFolder Directory="ProgramMenuSubFolder"  />
    <RemoveFolder Id='ProgramMenuSubFolder' On='uninstall' Directory='ProgramMenuSubFolder'/>
    <RegistryValue Root='HKCU' Key='Software\ShortcutProperty\[PRODUCTNAME]' Type='string' Value='1' KeyPath='yes' />
  </Component>
于 2012-12-05T09:32:53.037 回答
0

WiX 要求您在创建用户特定组件时始终使用 HKCU 注册表项。在这种情况下,dataDirectory 将始终安装在当前用户的配置文件中。在组件内添加 HKCU 或 HKMU 注册表元素,如下所示:

<Component Id="dataDirectory" Guid="E5938D44-5315-43D4-94EC-313F6CDB290B" NeverOverwrite="no" Permanent="no">
  <Registry Root='HKMU' Key='Software\[Manufacturer]\[ProductName]' KeyPath='yes'/>
  <RemoveFolder Id="AddOnName" On="both"/>
</Component>

由于您已经拥有 HKLM\Software[Manufacturer][ProductName],因此在每台机器安装的情况下这不会产生任何明显的影响。在按用户安装的情况下,它将创建 HKCU\Software[Manufacturer][ProductName]。

如果 HKMU 仍然失败并出现同样的错误,请用 HKCU 替换它。

对于第二个问题,请查看: 目录 xx 位于用户配置文件中,但未列在 RemoveFile 表中。

于 2012-12-11T11:55:37.137 回答