是否可以将MSI的副本添加到其自己的应用程序文件中?

时间:2013-03-20 16:05:28

标签: visual-studio-2010 windows-installer

我正在制作一个可以自动更新的Windows服务。计划是拥有一个控制台应用程序,该应用程序在有新版本的服务可用时运行。此应用程序将通过引用MSI来卸载并重新安装具有新版本的服务。所以,我想要一个应用程序文件夹中的MSI副本。

MSI可以在安装时将自己的副本放在应用程序文件夹中吗? 如果是这样,怎么样?

提前致谢!

2 个答案:

答案 0 :(得分:0)

这种方法最初是错误的。

如果有新版本,有很多机会可以升级。

  1. 安装时检查它们(某些安装程序具有autodownloader功能) - 部分解决方案,没有自动升级机会
  2. 服务需要发现新版本(后台线程) - 需要一些开发[msi在后台进行静默安装]< - 首选
  3. 集中部署 - 有集中安装的解决方案,甚至MS,IBM等都有这方面的工具。因此,如果新的解决方案准备就绪,那么无论您在域中部署它们是什么。 < - 不太划算,大公司使用tippicaly
  4. +1此外,有些方法可以在不停止服务的情况下执行此操作。在C#中,您可以动态加载和卸载版本化的程序集,但会使您的开发人员生活变得非常困难。

    如果您选择了2.nd选项,那么您可以从代码启动“asyncronly进程”,这样安装程序将使用默认选项(搜索静默安装)运行,尽管您可以定义自定义设置“my.msi -s config”。文件”。如果已经存在,安装程序需要准备好检查和停止服务本身。

    这是一个复杂的故事,搜索我提到过的一些关键词。

答案 1 :(得分:0)

我没有尝试让.msi复制自己(这需要一些真正的黑客来使自我引用工作),我建议让新的.msi升级旧的.msi文件。然后你只需要新的.msi并且不需要旧的.msi。

或者,你可以把东西放在Bundle中(使用WiX工具集中的Burn引擎),它可以通过Bundle进行自动更新。