问题标签 [auto-update]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
107 浏览

ajax - Ajax,检查更新,Same_origin_policy

我有这个随我的应用程序一起安装的 HTML 手册。本手册经常更新(每周 3-5 次),如果手册已过期,我想警告我的用户。

我想到的第一件事是为我的网络服务器创建一个热链接图像,我可以使用它来检查他们使用的版本并提供“更新”图像或“不更新”图像。但如果用户没有互联网连接,图像将显示为损坏的图像。我不希望那样。

接下来,我考虑使用一些 Ajax 从我的网络服务器发出请求。如果用户没有 Internet 连接,则 Javascript 将能够正常失败。但是我遇到了一个问题。因为该手册作为本地文件存储在用户 PC 上,所以它被认为是跨域请求(同源策略)从我的网络服务器发出请求。

关于还有什么可以尝试的建议?

我不能只在开始菜单中包含指向手册在线版本的超链接,因为我的许多用户都没有互联网连接。

0 投票
2 回答
808 浏览

auto-update - 更新产品的最佳方式

一些背景:

我们提供了一个由一个大型数据库和几个程序组成的复杂系统——大多数是用 C# 编写的,但是一些遗留应用程序仍在 MFC 上运行。

我们提供的大多数东西都在单个服务器上运行(运行 SQL Server 和 SQL Management Studio 2005),但是多个应用程序可以在多个客户端计算机上运行。更新这是一个真正的痛苦,因为在我们更新数据库后,过时的软件很可能由于数据库更改而中断。手动更新服务器软件是一回事,但确保所有客户端软件也能正常工作实际上是不可能的,而且随着时间的推移只会变得更糟。

我要编写一个更新服务,它将能够更新整个产品——更新数据库、重新安装服务和应用程序。(但是只有实际修改的程序/文件/表格/等应该更新。每次有可用更新时下载整个产品不是一种选择。此外,某些计算机可能只安装了可用程序的子集)

首先,是否有一种很好的方法来做到这一点?如果有类似于 ClickOnce 的东西也能够更新已经存在的数据库,我宁愿使用它。

如果没有,更新时的最佳做法是什么?所有和任何材料将不胜感激。

提交更新后,我需要尽快在服务器上安装一些更新,无需任何用户输入。这包括 Windows 服务(始终运行)和任何数据库更改。在进行了这些更改之后,我将不得不阻止任何不是最新的软件访问已更改的部分,或者根本无法运行。

任何建议将不胜感激 - 如果我必须编写这样的系统,我想把它做好。

0 投票
5 回答
5206 浏览

client-side - 在网络环境中自我更新桌面应用程序的最佳实践

我已经通过 google 和 SO 搜索了这个问题的可能答案,但只能找到散布在这个地方的一小部分信息,其中大部分似乎是个人意见。

我知道这个问题可能被认为是主观的,但我不是在寻找个人意见,而是在寻找有原因的事实(例如过去的经验),甚至是指向描述最佳实践的博客/wiki 的单个链接(这是我更愿意说实话)。我不想要的是如何使这项工作,我知道如何创建一个自我更新的桌面应用程序。

我想了解创建自更新桌面应用程序的最佳实践。我特别好奇的最佳实践是:

  • 如果客户端软件已过期,但在尝试与其他版本的软件或数据库本身通信时不会中断,您是否会强制更新?如果是这样,您如何表示这种重大变化?
  • 您应该多久检查一次更新?每周/每天/每小时,究竟为什么?
  • 更新应该对用户可见还是从 UI 的角度在幕后运行?
  • 如果不是主要更新,您是否应该通知用户有可用的更新?(例如,在只有一个用户实际需要的应用程序的远程部分修复单个按钮)
  • 您应该尝试修补应用程序还是从 Macintosh 风格重新下载整个应用程序?
  • 您应该允许用户从中央位置更新还是只允许通过指定的应用程序进行更新?(对于封闭的业务应用程序)。

当然有一些关于这些东西的书面规则/建议?许多应用程序最烦人的事情之一就是更新,因为很难在“过时”和“在用户面前”之间找到一个很好的平衡点。

如果它有助于考虑用 .net C# 为单个客户端编写,运行在与更新服务器具有持续可用连接的机器上,所有这些机器都通过应用程序相互通信,并且都与中央数据库服务器通信.

0 投票
1 回答
289 浏览

.net - 如何让我的自动更新程序替换程序文件?

我们开发了一个程序来检查我们的网站以查看是否有新版本可用。当有新版本可用时,下载程序会启动并检索文件,然后将整个文件夹复制到源顶部并使用新版本重新启动程序。

问题是当我们第二次运行程序时,软件实际上并没有更新——也就是说,刚刚下载和复制的文件已经恢复到原来的版本。

有没有办法防止这种情况?我们通常使用 .NET 2008 中的安装和部署项目来构建我们的应用程序安装程序。

0 投票
3 回答
2208 浏览

windows - Win32 应用程序的自动更新解决方案?

我们有一个桌面产品,由 Win32 服务、通知图标应用程序和相关的 DLL 文件组成。

我的任务是让它自动更新。我们可以编写自己的更新程序,但在我们这样做之前,我想看看还有什么。有没有我们可以使用的商业系统(我猜类似于 Windows 更新)?我确信 InstallShield 曾经提供过类似的功能,但我现在找不到了,而且我可能记错了。

它是一个 Win32 应用程序(和一个服务),所以 ClickOnce 已经过时了(或者是吗?)。

0 投票
2 回答
568 浏览

delphi - 检查更新

我正在 Lazarus 开发一个应用程序,它需要检查每个Form_Create.

我怎样才能做到这一点?

0 投票
2 回答
140 浏览

javascript - 更新 Javascript

我正在尝试在 Javascript 中创建一个更新时钟。当我逐步通过调试器时,一切都正常工作,除了它实际上并没有更新跨度。任何想法为什么?

0 投票
1 回答
440 浏览

vb.net - 为什么“我的”命名空间不可用?

我们的 Winform 应用由 Main.exe 和 Launcher.exe 组成。Launcher 应用程序的目的是检查 Main.exe 的更新版本。

如果它没有找到更新,它会使用 System.Diagnostics.Process.Start 启动 Main.exe

如果找到更新,它将新的 Main.exe 复制到相应位置并以相同的方式启动 Main.exe(在这种情况下,它将是 Main.exe 的新副本)。

这是 Process.Start 代码:

无论是否有更新,此代码都会执行,并且始终成功启动 Main.exe。

但是我们的 Main.exe,如果它是第一次运行(即更新后),将在任何引用 My 命名空间的行上出错,例如 My.Settings 或 My.Computer.FileSystem

例如此行将导致错误:

这是错误:

System.IO.DirectoryNotFoundException:找不到特殊目录“桌面”。在 Microsoft.VisualBasic.FileIO.SpecialDirectories.GetDirectoryPath(String Directory, String DirectoryNameResID) 在 Microsoft.VisualBasic.FileIO.SpecialDirectories.get_Desktop() 在 Microsoft.VisualBasic.MyServices.SpecialDirectoriesProxy.get_Desktop()

但是,虽然此示例是指桌面,但请记住它找不到任何 SpecialDirectories。它不仅限于桌面。

但只是第一次运行(即更新后立即)。此后它将运行良好。

如果进程失败得更厉害,与文件系统问题、锁或线程有关,那就更容易理解了。但是为什么只是 My 命名空间的这个“小”问题呢?

0 投票
13 回答
22169 浏览

qt - How can I enable auto-updates in a Qt cross-platform application?

I love applications that are able to update themselves without any effort from the user (think: Sparkle framework for Mac). Is there any code/library I can leverage to do this in a Qt application, without having to worry about the OS details?

At least for Windows, Mac and user-owned Linux binaries.

I could integrate Sparkle on the Mac version, code something for the Linux case (only for a standalone, user-owned binary; I won't mess with distribution packaging, if my program is ever packaged), and find someone to help me on the Windows side, but that's horribly painful.

0 投票
1 回答
1842 浏览

asp.net-mvc - 自动更新网络应用

我有一个需要定期更新的小型 Web 应用程序 (Mvc)(没有 ftp 或其他访问权限)。

我希望直接在应用程序中的“Super Ultra Mega administratior”页面中启动更新过程。

我知道这不是最好的安全方法,但我可以接受它,并且我想避免一个永久服务,当这不是真的需要时,它会不断地 ping 一个新版本。

我现在的想法是拥有一个具有正确写权限凭证的 Windows 服务,可以从安全网页调用到:

  • 停止 iis 服务(不是严格要求)
  • 通过安全 URL 下载应用程序的最新版本(zip 文件)
  • 在目录中备份服务器上压缩的旧 Web 应用程序 (c:\backups\v1_01102010.zip)
  • 在 Web 应用程序的目录中解压缩下载的 zip 文件
  • 重启 iis
  • (最终能够恢复过程)

这样的东西已经存在了吗?

我见过一堆 .net 的自动更新程序,主要针对 winform 或桌面应用程序,对于这个简单的过程来说似乎太复杂了。

我不需要编写或修改注册表,只需在没有用户交互的情况下自动执行 zip 提取。