我有一个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>
但这给了我一些错误,例如“组件dataDirectory安装到用户配置文件。它必须使用HKCU下的注册表项作为其KeyPath,而不是文件。”
并且“目录CompanyName在用户配置文件中,但未在RemoveFile表中列出。”
非常感谢任何帮助。 感谢。
答案 0 :(得分: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>
答案 1 :(得分: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 [制造商] [ProductName],则每台机器安装时不会产生任何明显效果。如果是每用户安装,它将创建HKCU \ Software [制造商] [ProductName]。
如果HKMU仍然以相同的错误失败,请将HKMU替换为HKCU。
对于第二个问题,请查看: Directory xx is in the user profile but is not listed in the RemoveFile table.