2011-04-06 133 views
3

我已经为我的安装程序脚本创建了主要升级,其中一个附加组件需要插入到GAC中。我使用下面的代码序列WiX:在主要升级中向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 RemoveExistingProducts =“InstallFinalize”/ >之后,但这并未产生效果。

回答

1

你知道组件取消注册的地方吗?它不应该发生,但它可能是由R​​emoveExistingProducts发起的嵌套卸载无意中从GAC中删除(新)组件。这应该不会发生,除非你做了像重新使用GUID的东西。通常,REP除了清除现在已过时并计划移除的组件之外,不会进行其他操作。

+0

假设我了解问题在行动:ProcessComponents。更新组件注册 – 2011-04-06 15:45:16

0

文件组件的关键成员的版本是否高于旧包中的版本?这是Windows Installer升级旧组件所必需的。

如果它使用相同的版本,则删除旧的组件,并且未安装新组件。这是一个已知的Windows安装程序错误。

+0

该文件不存在于原始软件包中,它是一个附加组件 – 2011-04-07 10:04:56

+0

对不起,我修改了这个问题。 – 2011-04-07 14:08:02