通过互联网更新MSI安装的最佳方式是什么?通过互联网更新MSI安装的最佳方法是什么?
ClickOnce不支持MSI。
我需要通过Internet自动发生更新,与Windows更新发生的方式相同。
理想情况下,我希望我的应用程序能够自动检测到有更新可用并下载并安装它。
回答应该只处理MSI的安装。我不介意是否需要安装Windows服务来监视更新。
通过互联网更新MSI安装的最佳方式是什么?通过互联网更新MSI安装的最佳方法是什么?
ClickOnce不支持MSI。
我需要通过Internet自动发生更新,与Windows更新发生的方式相同。
理想情况下,我希望我的应用程序能够自动检测到有更新可用并下载并安装它。
回答应该只处理MSI的安装。我不介意是否需要安装Windows服务来监视更新。
这里就是我最近为一个客户做:
的UI运行作为登录的用户。
服务以系统身份运行。该服务检查内容并将其下载到临时目录。然后它使用/ JM命令通告MSI。安装程序现在可以由非特权用户安装。
该服务向应用程序发送一条IPC消息,指出是时候安装了。应用程序启动安装程序,向其传递一个指示重新启动应用程序的标志。应用程序释放锁定的文件。
在安装程序结束时,标志会导致安装程序重新启动应用程序。
也看看wuw4图书馆。它有助于创建很多这种解决方案。
这是一个复杂的模式,但工作得很好。我拥有一家可以帮助您制定解决方案的公司。 :)
有几个问题:是否有必要提供服务?难道应用程序只是在启动时检查更新?服务有权访问哪个临时文件夹? – CJ7 2012-02-15 01:07:35
由于安全考虑以及Windows Installer的工作原理,最好有一个提升的进程,可以创建一个临时目录,其中非priv用户只能读取访问权限,并从那里通告安装。非特权最终用户进程然后可以启动安装,它将工作。如果非priv用户在启动时检查更新,这会在路上造成海拔问题。 – 2012-02-15 01:28:51
如果应用程序非常轻便,并且不需要管理员权限来安装,那么您可能需要考虑ClickOnce。但是如果这是一个Per-Machine安装,任何非priv用户都需要升级,那么这种MSI模式就是您需要的。 – 2012-02-15 01:29:50
Windows安装程序不支持自动更新,也不会处理它们的传送。我工作的公司销售的产品定位为updates and more。
这里是我平时做(它只是我如何更新我的节目一个概念):
使用Advanced Installer
或任何其他MSI installer/packer
支持Command Line
收拾你的更新程序的文件。在继续下一步之前,您需要正确设置参数并进行测试。
转到Visual Studio
- >选择您的项目然后 - >属性 - >生成事件。
在“Post-Build event command line
”文本框中输入先前创建的命令行参数,然后单击确定。
现在,无论何时您构建项目,visual studio都会自动将您的文件打包为MSI安装程序/打包程序。
最后一步是从命令行也寻找FTP Client
作品。
设置正确的参数并将其添加到上一个之后的“生成后事件”中。
现在,如果您再次使用visual studio构建项目。您的文件将被自动打包,然后上传到您的服务器。
现在您的文件应该在服务器上完全更新,您不必再担心这一点。这是我已经找到了最好的解决办法,我使用它,它就像一个魅力...
编辑:一件事,你还可以添加一个简单的程序来查找内部服务器上较新的更新你的程序。例如检查文件或文件版本的MD5哈希值等,一旦例程发现新的更新,它应该提示用户,然后你可以告诉用户下载最新的更新等等......
对不起,我不是故意要自动包发送到服务器。我的意思是用户将收到产品的自动更新。 – CJ7 2012-02-20 02:26:33
啊,你必须更新服务器上的文件先...然后读取编辑部分。你应该创建“更新”检查程序来检查服务器上的新版本.... – SolidSnake 2012-02-20 03:39:21
Did你检查应用程序虚拟化? http://www.microsoft.com/en-us/windows/enterprise/products-and-technologies/virtualization/default.aspx
这是将您的可执行文件/ msi流式传输到客户端的好方法,同时确保它始终运行最新的msi。
我很好奇,你有没有得到这个实现? – 2014-05-09 15:29:33