强制安装程序升级GAC中的文件,而不管版本号如何

Mik*_*ike 7 windows-installer wix

我有一个WiX安装程序,需要为GAC安装Interop.FOOBARLib.DLL的新位.问题是版本号与旧版本相同,并且新位不会在升级时写入GAC.我们在InstallFinalize操作后执行RemoveExistingProducts操作.

我们无法将RemoveExistingProducts操作移动到安装中的早期版本.

foob​​ar.dll组件不是我的组件所以我不能增加类型库版本(这将导致互操作的版本增加,所有这些问题都消失了).

有没有办法在GAC中强制升级文件,即使版本相同?我想要的行为类似于"gacutil.exe/f".

该组件看起来像:

<Component Id="Interop.FOOBARLib.dll" Guid="{4E0C173E-34DF-4249-A3A6-5530047FA65B}" >
    <File Id="Interop. FOOBARLib.dll" Name="Interop.FOOBARLib.dll" KeyPath="yes" Assembly=".net"/>
</Component>
Run Code Online (Sandbox Code Playgroud)

Dou*_*bal 11

您要做的是将其称为GAC中的程序集的就地更新.为了使其正常工作,Interop.FOOBARLib.dll库必须具有相同的程序集版本,但较新的dll必须具有更高的文件版本.文件版本属性必须包含在新MSI的MsiAssemblyName表中.默认情况下,Wix不包含此属性,因此您必须将以下参数添加到.wixproj文件中:

<SetMsiAssemblyNameFileVersion>True</SetMsiAssemblyNameFileVersion>
Run Code Online (Sandbox Code Playgroud)

也可以看看:

使用Wix进行就地更新


Wim*_*nen 1

您可以自己重新生成互操作程序集并强制它获得更高版本,如下所示:

tlbimp /asmversion:1.2.3 /out:Interop.FOOBARLib.DLL foobar.dll 
Run Code Online (Sandbox Code Playgroud)