c++ - 如何在没有管理权限的情况下为我的应用程序实现自动更新

标签 c++ windows auto-update

我维护着一个大型的 Windows C++ 应用程序,它使用 nullsoft nsis 安装.安装快速简单(不到 1 分钟)。

一些大公司的用户没有管理权限,他们必须订购昂贵的第 3 方服务来更新他们的安装。因此,其中一些一年仅更新一次,而我们每月发布一次,有时还会修复重要的错误等。

因此,我们正在考虑不需要提升管理权限的自动更新。 Mozilla 和 Adob​​e 以及其他公司都这样做。据我所知Mozilla XULRunner site他们安装一项服务,然后该服务可以在不强制用户输入管理密码的情况下运行更新。我还找到了Googles Omaha但不清楚管理员权限(“支持受限用户环境;例如,没有管理员权限的用户”……“这需要用户具有管理员权限。”)。

到目前为止,我还没有找到这些问题的确切答案:

  • 我们必须采取哪些步骤才能建立这样的机制?
  • 我们可以继续使用 nsis 吗?
  • 需要什么服务器基础设施?

最佳答案

您的应用程序应检查您的服务器/网站上的更新并获取下载链接。 如果您维护一个带有固定超链接的文本文件/页面,这应该很容易。 此超链接可以硬编码在您的应用程序中。 如果它检测到比当前版本更新的版本,则下载文件。 除了这些文件之外,还应该有关于要替换哪些文件以及要在什么位置添加哪些文件等的说明。

现在您是否需要管理员权限取决于您需要放置更新文件的位置。如果目标文件夹有一些限制,那么将很难在同一 session 中更新。因此,您可能必须启动一个虚拟 exe,它会在启动期间向用户询问管理员权限。现在您可以毫不费力地将更新后的文件复制到您想要的位置。

关于c++ - 如何在没有管理权限的情况下为我的应用程序实现自动更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25245031/

相关文章:

c++ - SDL2.0 键盘动 Sprite

c++ - 将字符串放入条件 (c++)

c++ - 复制省略误区

windows - Lein.bat 无法在 windows xp 中启动 repl

c++ - 找不到链接目录

C# - 在其他程序中编辑时实时更新 BackgroundImage

c++ - 使用 64 位类型?

windows - 代码段描述符中的 D 标志对 x86-64 指令有何作用?

vba - Excel VBA 自动更新列(日期)

ios - 如何每天更新一个标签文本,以便用户每天获得另一个预定义文本?