我已经构建了一个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
当删除prev version设置为true时,预计安装程序会使用较新版本替换C ++ dll。但它在Windows Server 2003 R2上没有被替换。
之前有人见过这个吗?请指教
答案 0 :(得分:1)
这里有两件事:
首先,如果要将DLL安装到SystemFolder(System32 \ SysWow64),则永远不要卸载。 Microsoft Best Practices规定此处安装的文件应该是永久性的。
其次,请确保您了解Default File Versioning规则。在安装和升级过程中,MSI将查看文件版本并使用它来确定是否覆盖该文件。如果您正在重建DLL并且没有正确地对文件进行版本控制,那么您将无法获得预期的结果。