假设我们有msi x.msi并且它正在安装xap文件。
我们想通过另一个msi覆盖xap文件(例如,使用y.msi)。
是否可以通过另一个msi覆盖?它会有任何问题,因为它没有任何与之关联的版本号吗?
如果有可能,如果我们卸载x.msi会发生什么?
建议覆盖另一个msi安装的文件吗?
答案 0 :(得分:2)
XAP文件尽管是应用程序二进制文件,但没有版本资源,因此Windows Installer无法正确对其进行版本控制。结果你可以进入DLL地狱,因为最后一个包将被安装。
要缓解这种情况,请考虑使用版本构建无意义的DLL,并将其用作组件的密钥文件。这样MSI将根据DLL版本评估安装。这应该可以防止XAP的版本冲突。
确保两个MSI具有相同的组件ID,并且该组件被标记为共享。这将适应正确的引用,以便上次卸载将删除该组件。