我有一个MSI文件,它将一组dll从源文件夹复制到目标文件夹。在运行MSI时,dll被复制到目标文件夹,MSI也安装在系统中。我可以在添加或删除程序中看到这一点。
每当dll发生更改时,我都会复制新的dll并重新构建MSI。当我尝试在同一系统中运行MSI时,我得到了错误“另一个版本已经存在。卸载该版本并继续”之类的错误。
到目前为止,我正在做的是卸载旧的(MSI)并安装新的。
但我希望MSI用来自MSI的最新dll更新旧的dll,而不是卸载并重新安装。
提前谢谢。
发布于 2014-04-30 00:22:18
您不能简单地重新运行MSI来进行更新。这里有一些背景知识,即使你没有使用Visual Studio设置,而且经过这么长时间后,它仍然是相关的:
https://www.simple-talk.com/dotnet/visual-studio/updates-to-setup-projects/
要替换单个文件,请构建一个补丁,即msp文件。要升级整个安装程序,包括Dll,然后使用WiX主升级元素,这可能比构建补丁容易得多,特别是如果你的安装很小,安装不需要很长时间。增加Dll的文件版本以确保其被替换。
发布于 2014-04-30 02:56:09
欢迎来到StackOverflow --这似乎是你的第一篇文章。如果我是你,我会阅读这篇文章,了解如何实现WIX的主要升级:How to implement WiX installer upgrade?。这是另一个线程(没有通读这个线程):How to get WiX major upgrade working?
主要升级本质上是自动卸载现有版本并重新安装新版本。这是Windows Installer中最不容易出错的更新机制。这是首先尝试的推荐方法--它效果很好。一个小的升级--即升级现有的安装,通常在一开始就很难做到。应用了许多技术限制。下面是一个很好的总结,说明了小升级所需的条件(以及其他细节):http://www.installsite.org/pages/en/msi/updates.htm
请查看this well known wix tutorial以获取升级和补丁。和MSDN。
https://stackoverflow.com/questions/23368316
复制相似问题