0

我已经构建了一个 C# MSI 安装程序,它在系统目录中复制了一个 C++ win32 dll。它可以在 windows 7、windows server 2008 R2 和 windows server 2003 R2 上正常安装。

但是,卸载描述了不同的行为 - 在 Windows 7 上:卸载删除了 C++ dll - 在 Windows Server 2008 R2 上:卸载删除了 C++ dll - 在 Windows Server 2003 R2 上:卸载没有删除 C++ dll

当 remove prev version 设置为 true 时,预计安装程序会将 C++ dll 替换为较新版本。但它不会在 windows server 2003 R2 上被替换。

有人见过这个吗?请指教

4

1 回答 1

1

这里有两件事:

首先,如果您要将 DLL 安装到 SystemFolder (System32\SysWow64),则永远不要卸载。Microsoft 最佳实践规定此处安装的文件应该是永久性的。

ICE09

其次,确保您了解默认文件版本控制规则。在安装和升级期间,MSI 将查看文件版本并使用它来确定是否覆盖文件。如果您正在重建 DLL 并且没有正确地对文件进行版本控制,您将无法获得预期的结果。

于 2012-08-03T23:45:08.543 回答