MyApp版本1.0包含文件foo.dll.此文件的版本是10.5.567版.现在MyApp是2.0版,foo.dll版本是2.0.123.版本低于旧版本.编写此dll的供应商决定使用文件版本号向后退.这不是我可以改变的决定.
如何让WiX始终安装此文件?
RemoveExistingProducts操作在InstallFinalize操作之后计划,也无法更改.
InstallShield有一个'always overwrite'标志,但我不认为我可以在不通过编译器开关更改所有文件的行为的情况下模仿它.我不想要这个.我只是想更新这个文件.
我也试过了
<RemoveFile Id="foo.dll" On="install" Name="foo.dll" />
Run Code Online (Sandbox Code Playgroud)
但这也不起作用.我最终收到'错误2753文件foo.dll未标记为安装'.
我有一个WiX安装程序,需要为GAC安装Interop.FOOBARLib.DLL的新位.问题是版本号与旧版本相同,并且新位不会在升级时写入GAC.我们在InstallFinalize操作后执行RemoveExistingProducts操作.
我们无法将RemoveExistingProducts操作移动到安装中的早期版本.
foobar.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)