c# - 如何最好地实现我的 Windows 桌面和服务 C# 应用程序自动更新?

标签 c# windows-7 windows-xp setup-deployment

我的项目包含运行在用户办公室台式电脑上的 WinForms、WPF 和 Windows 服务程序。我希望这些应用程序定期检查特定 URL 上可用的新版本,自动下载新版本并用新版本替换自己而不引起任何用户注意(请记住,用户可以运行从 XP 到 7 的 Windows 并使用非特权帐户工作(它可以是事件目录的一部分))。或者,整个更新包必须能够作为无人值守安装的 MSI 包进行分发。

关于实现这个的任何建议?

最佳答案

你运气不好 - 遗憾的是所有解决方案都很糟糕。您最好的选择(即我正在做的事情)是让一个应用程序定期检查它是否过时并向用户发出信号。现在,在我的例子中,“Wndows 服务”的意思是“用户登录到另一台计算机,几乎一直在控制该服务”,所以我需要有人提醒。如果这不起作用,您将不得不重新实现诸如 Windows 更新服务之类的东西 - 遗憾的是,没有预定义的方法可以做到这一点。

没有用户关注根本不起作用,顺便说一句。 - Windows 服务的安装/更新必须使用管理权限来完成,即使这些来自进行更新的 Windows 服务的特权。无论你做什么都是肮脏的问题。

我会选择 MSI - 这样企业用户可以通过他们的软件管理(可以安装特权)推出它,无论他们在那里使用什么(有多个),(家庭)最终用户只需安装它管理员权限,就像他们对所有其他软件所做的那样。也许在每次启动时调用 Web 服务,在中央服务器上检查新版本。

关于c# - 如何最好地实现我的 Windows 桌面和服务 C# 应用程序自动更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2797817/

相关文章:

c++ - 很奇怪的 MinGW ld 问题 - "collect2: ld returned 1 exit status"

WPF:字体(大小)在 XP 和 Vista/7 上呈现不同

c# - 如何正确地将浮点指针从 C 库传递到其 C# 包装器

c# - C#获取当前工作簿对象

c++ - 将 C++ 应用程序从 XP 移植到 Vista/7

windows-7 - 如何通过SFTP轻松比较本地和远程文件

delphi - 为什么组合框在字体更改时将其文本更改为项目文本?

c# - MessageBox.Show ("First Name,{0}", textBox1.Text);

c# - 将字符周期替换为摩尔斯电码等效物会弄乱 TextBox

c - SetComputerName 函数的问题