我需要定期将一组更新的文件(DLL,javascript)作为补丁版本发布到各种版本的多台Windows PC(vista / XP / 7等)。目前我的网站上有一个链接,供每个用户下载setup.exe文件并手动安装补丁(替换现有的DLL)。为了消除手动过程,我正在研究如何在Windows上自动运行程序(我认为这意味着一项服务),它将定期检查我的服务器以进行更新,下载并自动触发setup.exe(或某些取代补丁文件的类似过程。)
我本身不是Windows开发人员,但已经下载并尝试检查各种选项(为了不重新发明轮子),如Sparkle,DDay,CSAutoUpdater,Npackd,刚开始研究Google Omaha - 但大多数假设在使用其库/组件启动Windows应用程序时发生检查。我需要独立于我正在尝试更新的应用程序运行autoupdater - 所以我需要首先让所有用户运行一个setup.exe,它应该安装并启动我的Windows服务,以便它可以每天运行windows来运行程序检查,下载和安装更新。
我发现了一些用于在stackoverflow上编写Windows服务的示例代码,也是codeproject,但是找不到如何自动安装它(理想情况下,对于较新的Windows版本没有UAC麻烦)。所有这些都需要使用instalutil或其他一些手动过程来安装和启动服务。
对此的任何指导都会很棒!谢谢 - 并对冗长的问题道歉。在我试用其他产品时会更新其他结果。
答案 0 :(得分:1)
正如你提到的Npackd,我想描述一下如何使用它。
我同意selbie的说法,最简单的解决方案是使用Windows调度程序创建任务。
对于Npackd,您需要自己的存储库 - 可通过HTTP访问的XML文件,例如http://www.yourserver.com/rep.xml。以下是存储库的简单示例:https://gist.github.com/raw/4132983/dabecde48c796d4fdfa2f645bb744ac58640572c/TestRepository.xml。用户可以下载Npackd(http://code.google.com/p/windows-package-manager/downloads/list)并将URL添加到存储库列表。
我会定义2个包:一个用于程序本身,另一个用于自动更新程序。这样,如果有人想手动更新程序,他也可以这样做。
您可以使用每个Windows系统上可用的命令行工具schtasks.exe创建或删除Windows任务。
更新命令本身也很简单:
npackdcl update --package=<package>
答案 1 :(得分:0)
为了消除手动过程,我正在研究如何在Windows上自动运行程序(我认为这意味着一项服务),它将定期检查我的服务器进行更新,下载并自动触发setup.exe (或者替换补丁文件的一些类似过程。)
您可能希望Windows任务计划程序服务用于语句的“定期”部分。您可以使用它来启动实际执行“检查更新”,下载,复制等所需的任何代码......我认为您不需要Windows服务。
您可以编写任务计划程序事件的脚本。或者使用API以编程方式执行此操作。
答案 2 :(得分:0)
您可以执行以下操作:
如果版本是diff,请要求用户从服务器更新到最新版本。
如果他点击是。从服务器更新文件。
普拉萨德。