在Mac上有一个非常好的名为Sparkle的库,程序可以使用它来实现自动更新的检查/安装功能.
.NET有什么类似的东西吗?或者只是常规的Win32?
我们正在开发一个真正复杂的系统,包括几个WCF服务,ASP.NET MVC应用程序,管理工具(Windows窗体应用程序)......其中一些将在几个服务器上运行实例.我们正在为这样的系统寻找一个好的自动更新解决方案.最有可能的是,我们需要一个单独的自动更新应用程序(服务)来完成这项工作,或者需要一些集中管理应用程序来了解所有已安装实例的版本并远程执行更新.是否有为此目的而制作的优质产品/库,您知道或有过经验吗?
这可能吗?
我所能看到的只是我需要使用第三方工具(例如Orca)从我现有的MSI获取GUID并使用这些来配置InstallShield以卸载现有版本.我已经尝试过这些指令中的一两个,但到目前为止还没有任何工作.可能是因为我做错了什么,但似乎我正在经历许多箍,做一些我认为应该相对直截了当的事情.这个问题以前没有解决过吗?
谷歌的最高结果指向了这个答案:
这是否意味着每次我想部署新版本时,我必须用Orca打开我的'旧MSI并获得它的UpgradeCode'?
这听起来有点hackish,当然我每次部署新版本时都不想做.有没有办法实现自动化?这个功能是否在更高版本的InstallShield中可用(请记住我在LE上 - 如果需要我会升级)
为.NET WinForms应用程序创建自动更新功能时,它如何更新DLL而不影响当前运行的应用程序?
由于应用程序在更新过程中运行,因此不会锁定DLL(因为在更新期间必须覆盖这些DLL).
我需要保留一份我已经写好的程序,这将在未来一年左右频繁发生,这需要通过互联网完成.你在哪里建议我开始,有没有常见的技巧?欢迎任何建议.
谢谢
如何开发我的Windows应用程序,以便在客户端计算机上自动更新,如Firefox,Skype等?
是否有任何简单的方法或任何开源库可以帮助我按照一些步骤或几行代码来完成它?
我能找到的关于这个主题的所有解决方案都非常古老,而且似乎没有一个能回答我的问题......
我正在尝试创建一个可以自我更新(或通过某些外部触发器自动更新)的 Windows 服务。过去,我创建了一个使用 InstallShield 安装的 Windows 服务,我们可以通过让该服务将批处理脚本写入本地计算机,然后运行该批处理脚本,以一种黑客的方式更新自动更新服务,这将停止服务,用新文件覆盖服务可执行文件和其他文件,然后重新启动服务。这令人惊讶地奏效了。
但是,我已更新服务以使用 InstallUtil.exe,并且此自动更新脚本不再起作用...我认为这与 InstallShield 处理服务安装的方式与 InstallUtil 的处理方式有关...但我只能使猜测,因为我不完全理解每个人对注册表的作用。
由于我不能只覆盖文件并使用 InstallUtil 方法重新启动服务,因此我想编写一个运行 sc.exe 的批处理脚本来停止服务,完全卸载它,写入新文件,安装新服务文件,然后启动它...不幸的是,我似乎无法让 sc.exe 自动从 Windows 服务运行,因为它需要管理员权限...我尝试使用此代码片段强制它自提升到管理员权限,但它似乎不能作为服务工作(如果我从命令行而不是作为服务运行它,它可以正常工作)
if not "%1"=="am_admin" (powershell start -verb runas '%0' am_admin & exit /b)
Run Code Online (Sandbox Code Playgroud)
有谁知道如何让 Windows 服务进行自我更新?如果 .NET Core 中有某种我不知道的自我更新方法,我可以考虑更新到 .NET Core Worker 服务...任何想法都非常感激...实际上不应该这么难完成...
作为参考,这里是我当前使用的批处理脚本(忽略奇怪的变量,例如我动态替换其中的一些变量,它在手动启动时效果很好,只是在服务尝试运行它时不起作用):
@echo off
setlocal enableextensions enabledelayedexpansion
::make sure to run whole script as admin (this restarts scripts as admin if not already in admin mode)
if not "%1"=="am_admin" (powershell start -verb runas '%0' am_admin & …Run Code Online (Sandbox Code Playgroud)