我已经对我的安装程序脚本进行了重大升级,其中一个附加组件需要插入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中。
我使用&lt; RemoveExistingProducts After =“InstallFinalize”/&gt;移动了RemoveExistingProducts,但这没有效果。
答案 0 :(得分:1)
您知道调用组件取消注册的位置吗?它不应该发生,但可能是由RemoveExistingProducts启动的嵌套卸载无意中从GAC中删除了(新)组件。除非您已经完成了重新使用GUID之类的操作,否则不会发生这种情况。通常,除了清除现已过时且计划删除的组件之外,REP不会对其他任何操作进行操作。
答案 1 :(得分:0)
文件组件的密钥成员是否具有比旧包中的密钥成员更高的版本?这是Windows Installer升级旧组件所必需的。
如果它使用相同的版本,则删除旧组件并且不安装新组件。这是一个已知的Windows Installer错误。