WiX:在主要升级中添加一个条目到全局程序集缓存(GAC)

3

我已经对我的安装程序脚本进行了重大升级,其中一个附加组件需要插入到GAC中。我正在使用以下代码序列:

<Component Id="Net20ApiAssembliesGAC" Guid="GUID">  
<File Id="FileId" Name="FileName" 
  DiskId="1" Assembly=".net" KeyPath="yes" 
  Source="..\..\API\DotNet\Assemblies\v2.0\FileName" />  
</Component>

安装早期版本而不是升级可以成功,但如果升级,我会在详细日志中看到以下条目:

UnregisterSharedComponentProvider

ComponentUnregister

而且该条目不会出现在GAC中。

我已经使用<RemoveExistingProducts After="InstallFinalize" />将RemoveExistingProducts移动,但这没有任何效果。

2个回答

1

你知道组件注销函数被调用的位置吗?理论上不应该发生,但是可能由于RemoveExistingProducts引发的嵌套卸载意外地将你的(新)组件从全局程序集缓存中删除了。这种情况通常不会发生,除非你像重复使用了GUID之类的操作。通常,REP只会清除那些已过时并计划要删除的组件。


假设我理解的问题是在Action <TIMESTAMP>:ProcessComponents中。正在更新组件注册。 - Martin Johnson

0
文件组件的关键成员版本是否比旧包中的版本高?这对于 Windows Installer 升级旧组件是必需的。
如果使用相同版本,则删除旧组件,新组件不会安装。这是一个已知的 Windows Installer 错误。

该文件不在原始包中,它是一个附加组件。 - Martin Johnson
抱歉,我修改了问题。 - rmrrm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接