3

我有一个小型 .NET WinForms 应用程序,以及几个 linux 服务器,DEV 和 CL1,CL2..CLN(DEV 是开发服务器,CL* 是属于我们客户的服务器,它们位于专用网络中,这是一种生产服务器)

我想要一个更新机制,以便
(1) 我开发一个新版本并将其发布给 DEV
(2) DEV-server 的用户从 DEV 安装最新版本
(3) CL2 的用户(client2 的员工)从 CL 安装稳定版本-2 直接
(4)应用程序使用安装它的服务器检查更新(因此,如果它是从 CL-2 安装的,它应该检查 CL-2 的更新)
(5)我应该能够将更新传播到选择 CL 服务器(仅使用文件复制和可能 sed;不重新发布),如果我想要的话(如果我不这样做,那 CL 服务器将有一个旧版本,直到我手动更新它)

我尝试使用 clickonce,但看起来它只满足前两个要求。

我该怎么办?

4

3 回答 3

4

老实说,ClickOnce 应该处理 1-4。所需要的只是对于您要部署/更新的每个站点,您需要它有自己的发布,在查看您的规范之后这样做并没有错。

然后,为了使 5. 适用,您可以做的是创建一个自动流程来重新发布文件。这可以执行发布,然后上传到正确的服务器。

请记住,每个版本的 ClickOnce 都需要一个新的清单,而新版本需要发布,所以我不确定您是否会通过简单的文件替换获得 5. 左右。

于 2010-05-25T21:05:24.330 回答
2

凯尔是对的。但是对于第 5 点,你只需要复制部署,然后使用 mage 修改安装 URL 并将其指向新服务器,然后重新签署清单。

于 2010-05-26T08:48:02.217 回答
0

我支持我们部署到 DEV、QA、PROD 服务器的应用程序。我处理这个问题的方法是我创建了一个 cmd 文件,该文件具有对 MSBUILD 的命令行调用。它使用适当的 URL 和开关为每个服务器构建一次应用程序。我给我的 DEV 和 QA 构建了一个不同的 AssemblyName,这样我就可以并排运行所有 3 个环境。这样我的构建过程是自动化的,我根本不需要发布。

这是一篇描述您可以使用的参数的文章。 http://msdn2.microsoft.com/en-us/library/ms165431(VS.80).aspx

@Kyle,对于上述解决方案,不同版本可以并排运行,或者您是否收到指示应用程序已安装的错误。

于 2010-05-28T13:01:23.153 回答