2012-08-03 95 views
0

我已经构建了一个C#MSI安装程序,用于复制系统目录中的C++ win32 dll。它在Windows 7,Windows Server 2008 R2和Windows Server 2003 R2上安装得很好。MSI卸载不会删除Windows Server 2003 R2上的win32 DLL

然而,卸载描绘了不同的行为 - 在Windows 7:卸载删除C++ DLL - 在Windows Server 2008 R2:卸载删除C++ DLL - 在Windows Server 2003 R2:卸载不删除C++的dll

当删除prev版本设置为true时,预计将由安装程序用新版本替换C++ dll。但它并没有在Windows Server 2003 R2上被替换。

以前有人看过这个吗?请在这里打球劝

回答

1

两件事情:

首先,如果你正在安装一个DLL到SystemFolder(SYSTEM32 \ SYSWOW64)你永远不应该卸载。 Microsoft最佳实践规定,此处安装的文件应该是永久性的。

ICE09

第二,确保你理解了Default File Versioning规则。在安装和升级过程中,MSI会查看文件版本并使用它来确定是否覆盖文件。如果您正在重建DLL并且没有正确版本化该文件,则无法获得您期望的结果。