Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 设置计算机以呼叫总部进行软件更新_Windows_Svn_Deployment_Service_Wix - Fatal编程技术网

Windows 设置计算机以呼叫总部进行软件更新

Windows 设置计算机以呼叫总部进行软件更新,windows,svn,deployment,service,wix,Windows,Svn,Deployment,Service,Wix,我有一个硬件产品,其中包括一台windows PC,它有两个软件组件,我们希望偶尔更新。一个是通过具有版本号的WiX MSI安装程序安装的,另一个是SVN签出(我无法改变这两种方法中的任何一种) 我们有许多这样的机器,无论是在工厂里,还是与客户在一起。在推广到所有计算机之前,我可能希望更新一部分计算机上的安装以进行测试,例如,所需版本可能是: 机器| SVN版本| MSI版本 001 | 6000 | 1.0.4 002 | 6000 | 1.0.4 003 | 6250 | 1.0.5 004

我有一个硬件产品,其中包括一台windows PC,它有两个软件组件,我们希望偶尔更新。一个是通过具有版本号的WiX MSI安装程序安装的,另一个是SVN签出(我无法改变这两种方法中的任何一种)

我们有许多这样的机器,无论是在工厂里,还是与客户在一起。在推广到所有计算机之前,我可能希望更新一部分计算机上的安装以进行测试,例如,所需版本可能是:

机器| SVN版本| MSI版本

001 | 6000 | 1.0.4

002 | 6000 | 1.0.4

003 | 6250 | 1.0.5

004 | 6250 | 1.0.5

005 | 6500 | 1.0.6

我的想法 我正试图找到一种可靠的软件更新方法,目前我有一个想法,那就是建立一个可以公开访问的网页,保存上述数据。每台机器都会运行一个服务,定期检查网站及其自己的线路,将SVN和MSI值与机器上当前的值进行比较,然后,如果适用:

a) 将SVN链接文件夹更新为指定版本

b) 下载并运行适用的MSI安装程序(可能包括更新程序服务的更新)

当然,仅仅因为这是我的第一个想法,并不意味着它是最好的,甚至不是好的,所以我想我会问你们所有人,如何以一种可靠的、优雅的失败方式来处理这个问题


有什么想法吗?

自动更新程序应用程序通常运行的方式是提供web服务(而不是网页)。在客户端系统上运行的应用程序会定期调用web服务,并传递MSI设置的ProductCode、UpgradeCode和ProductVersion。该网站维护一个数据集,告诉调用者是否有补丁、小更新或完全升级可用(更新产品至少有三种方法!)。然后,应用程序下载MSI并(取决于UI情况)询问是否安装它。如果每个系统只有有限的用户,他们可能无法安装它。如果站点有一个中央分发机制,那么alroc的建议是最好的一次性系统中心、组策略、Active Directory类型的机制,以将更新推送到每个系统

在您的测试用例中,候选beta机器可以标记为“beta”名称,例如注册表项,当应用程序调用web服务时,它可以说它是beta测试人员,并获取早期版本的设置

让服务调用web服务并下载安装程序可能会有问题,特别是当您使用系统帐户运行时,因此在运行的应用程序中使用它可能更安全

如果你只是想要一个简单的网页供人们浏览,那么这一切可能都是多余的。只需小心将更新后的MSI下载到实际的安全永久位置,而不是将其删除到浏览器的临时文件夹中


无论如何,希望这里有一些有用的想法

如果你像这样集中推送更新,有一件事你没有提到;对更新进行签名(并检查签名),这样电脑就不会被说服安装恶意软件,以防你的更新站点被黑客攻击。你不能改变软件的分发方式真是太糟糕了,因为SVN不是一个软件分发工具。我的意思是,它可以工作,但它的工作原理是用扳手来驱动屋顶钉“工作”。我很乐意为MSI部分考虑一个解决方案,然后利用它的成功尝试通过一个开关上的Svn方面的东西。看起来像使用系统中心(或者任何MS调用SCCM本周)将是一个更好的方式去。您可以通过它推出安装(如果您的MSI允许脚本化/无人参与安装,则可获得额外点数),并将您的系统划分为“集合”,这样您就可以先推送到有限的测试机器组,然后再到处推送。