我正在制作一个可以自动更新的Windows服务。计划是拥有一个控制台应用程序,该应用程序在有新版本的服务可用时运行。此应用程序将通过引用MSI来卸载并重新安装具有新版本的服务。所以,我想要一个应用程序文件夹中的MSI副本。
MSI可以在安装时将自己的副本放在应用程序文件夹中吗? 如果是这样,怎么样?
提前致谢!
答案 0 :(得分:0)
这种方法最初是错误的。
如果有新版本,有很多机会可以升级。
+1此外,有些方法可以在不停止服务的情况下执行此操作。在C#中,您可以动态加载和卸载版本化的程序集,但会使您的开发人员生活变得非常困难。
如果您选择了2.nd选项,那么您可以从代码启动“asyncronly进程”,这样安装程序将使用默认选项(搜索静默安装)运行,尽管您可以定义自定义设置“my.msi -s config”。文件”。如果已经存在,安装程序需要准备好检查和停止服务本身。
这是一个复杂的故事,搜索我提到过的一些关键词。
答案 1 :(得分:0)
我没有尝试让.msi复制自己(这需要一些真正的黑客来使自我引用工作),我建议让新的.msi升级旧的.msi文件。然后你只需要新的.msi并且不需要旧的.msi。
或者,你可以把东西放在Bundle
中(使用WiX工具集中的Burn引擎),它可以通过Bundle
进行自动更新。