.net应用程序更新

时间:2012-05-10 15:35:32

标签: c# .net visual-studio visual-studio-2010

我即将发布应用程序的Beta版本,并希望确保可以远程更新它,并在应用程序中通知用户存在更新。理想情况下,我想强制更新,如果可能的话。我目前正在使用与VS2010一起打包的InstallShield LE来构建我的安装exe文件。

我的计划是创建一个wcf Web服务,它将提供所有产品版本的XML表现形式。 我不确定的是如何提供更新。我能想到的选择是

  1. 提供新的installshield安装程序 - 安装程序非常多 比程序大,所以一旦程序安装,发送 完整的安装程序似乎有点矫枉过正。
  2. 只发送msi 文件 - 我不确定如何在VS2010中创建MSI安装程序。
  3. 下载新的应用程序文件(一个exe大约7 10个Dll)和 用新的文件替换当前文件。
  4. 有没有人想过哪个选项最好以及如何实现?我是否需要某种代码签名并在客户端检查安全性?

    感谢您的帮助。

    编辑 - 应该提到ClickOnce不是一个选项。主要是因为它不够定制,不适合我们的外观和感觉。还有ClickOnce的其他几个问题,我不会在这里讨论。

3 个答案:

答案 0 :(得分:2)

几年前我遇到了类似的情况,我们正在开发一种带有几个可选松散耦合组件的产品。我们最终做的是当应用程序启动时,它会检查我们的“UpdateService”并匹配元数据。

如果应用程序未更新,我们将启动一个单独的进程来更新XML并从我们的更新服务中删除字节数组中的DLL,该服务将XML和更新的DLL复制到相应的文件夹中。

当时对我们有用。部分原因是客户端可能会升级功能,我们可能需要下载其他DLL。

然而,应用程序的第一次安装是通过安装程序(exe)。

挑战在于我们必须编写自定义内容以及适当的管理或版本的补丁/程序集。但这足以让他们考虑并满足产品经理

答案 1 :(得分:1)

ClickOnce似乎是一个不错的选择..

http://msdn.microsoft.com/en-us/library/t71a733d(v=vs.80).aspx

祝你好运

答案 2 :(得分:0)

除非你进行了影子复制(http://msdn.microsoft.com/en-us/library/ms404279.aspx),否则你无法就地“替换”文件。如果你没有使用ClickOnce,你必须有一些方法来“检查”如果有更新,应用程序。我认为WCF对此有点过分;您可以只使用一个已知的URL来获取可与应用程序中的版本号进行比较的“版本号”,以及获取“最新”版本的已知URL ...大多数应用程序只需下载MSI并询问用户执行它。