2

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

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

  1. 提供新的 installshield 安装程序 - 安装程序比程序大很多,因此一旦安装程序,发送完整的安装程序似乎有点过分了。
  2. 只发送 msi 文件 - 我不确定如何在 VS2010 中创建 MSI 安装程序。
  3. 下载新的应用程序文件(一个 exe 大约 7 10 Dlls)并用新文件替换当前文件。

有没有人想过哪个选项最好以及如何实施?我是否需要某种代码签名并在客户端检查安全性?

谢谢你的帮助。

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

4

3 回答 3

2

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

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

这对我们当时有用。部分原因是客户端可能会升级功能,我们可能需要它来下载额外的 DLL。

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

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

于 2012-05-10T15:57:57.197 回答
1

ClickOnce 对您来说似乎是一个不错的选择。

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

最好的祝福

于 2012-05-10T15:41:46.010 回答
0

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

于 2012-05-10T15:57:11.813 回答