Wix 带有RegSearch的旧属性正在影响产品升级(没有此道具的新版本)
我继承了WiX中创建的MSI项目,现在我正试图解决一些不幸存在的问题 有一个用于查找保存在注册表项中的特定目录的:Wix 带有RegSearch的旧属性正在影响产品升级(没有此道具的新版本),wix,windows-installer,major-upgrade,Wix,Windows Installer,Major Upgrade,我继承了WiX中创建的MSI项目,现在我正试图解决一些不幸存在的问题 有一个用于查找保存在注册表项中的特定目录的: <Property Id="AUTO_FOUND_DIR" Secure="yes" Admin="yes"> <RegistrySearch Id="regsrch_AUTO_FOUND_DIR" Root="HKCU" Key="$(var.RegPath)"
<Property Id="AUTO_FOUND_DIR" Secure="yes" Admin="yes">
<RegistrySearch Id="regsrch_AUTO_FOUND_DIR"
Root="HKCU"
Key="$(var.RegPath)"
Name="$(var.SpecificKey)"
Type="raw"
/>
</Property>
问题是:我不需要这种解决方法(也不需要使用AUTO\u FOUND\u DIR
属性。我已经删除了该代码,但在升级过程中(主要,Product
和Package
GUIDs设置为“*”
,升级代码
与以前的版本具有相同的值)我可以在MSI的详细日志中看到,这个AUTO\u FOUND\u DIR
存在,RegistrySearch
读取具有特定目录的键值,因此util:RemoveFolderEx
删除该目录和位于其中的所有组件
我的问题是:如何检测升级过程中为什么会使用此旧属性,以及如何将其清除
附加信息:安装范围为
PerMachine
,ALLUSERS
设置为1。升级版本的MSI已删除此属性。如果不仔细查看完整的详细日志以了解情况,请记住升级会卸载较旧的已安装产品。这意味着升级过程中会出现较旧安装产品中的逻辑。因此,您肯定会看到在较旧产品卸载时运行RegistrySearch,设置AUTO_FOUND_DIR,并且会看到卸载过程中运行的RemoveFolder
因此,如果您看到的只是正在卸载的旧产品的卸载活动,则不清楚您是否真的存在问题。该活动嵌入到已安装的产品中。感谢Phil的回复!是的,我知道卸载是升级的一部分,我读了您的书(谢谢!)在引入此属性的产品版本中,
RemoveExistingProduct
是在InstallExecute
之后安排的。我已将此更改为在InstallInitialize
之后安排的。这解决了问题,但有副作用,因为我现在需要重新安排许多CA。我应该更清楚-是在升级过程中,是否可以通过某种方式阻止较旧版本的注册表搜索?
<Feature>
<DirectoryRef Id="ProgramMenuDir">
<Component Id="cmp_ProgramMenuDir" Guid="{0E8BD13A-GUID-IS-HERE-6E5092ECA9EF}">
<CreateFolder />
<RemoveFolder Id='ProgramMenuDir' On='uninstall' />
<RegistryKey Id='reg_SpecificKeyID' Root='HKCU' Key='$(var.RegPath)' ForceCreateOnInstall="yes">
<RegistryValue Type='string' Name='$(var.SpecificKey)' Value='[ProgramMenuDir]'/>
</RegistryKey>
<!-- other content: shortcut to ProgramMenuFolder and other stuff -->
<util:RemoveFolderEx Id="rm_dirID" On="install" Property="AUTO_FOUND_DIR"/>
</Component>
</DirectoryRef>
</Feature>