Windows installer 通过internet更新MSI安装的最佳方式是什么?
通过internet更新MSI安装的最佳方式是什么 ClickOnce不支持MSI 我需要更新自动发生在互联网上,以同样的方式作为Windows更新发生 理想情况下,我希望我的应用程序能够自动检测到有可用的更新,然后下载并安装Windows installer 通过internet更新MSI安装的最佳方式是什么?,windows-installer,auto-update,Windows Installer,Auto Update,通过internet更新MSI安装的最佳方式是什么 ClickOnce不支持MSI 我需要更新自动发生在互联网上,以同样的方式作为Windows更新发生 理想情况下,我希望我的应用程序能够自动检测到有可用的更新,然后下载并安装 答案应仅涉及MSIs安装。我不介意是否需要安装Windows服务来监视更新。您可以使用msiexec实用程序。您可以找到一个例子。Windows Installer不支持自动更新,也不会处理自动更新的交付。我工作的公司销售产品目标。以下是我最近为一位客户所做的工作: 用户
答案应仅涉及MSIs安装。我不介意是否需要安装Windows服务来监视更新。您可以使用msiexec实用程序。您可以找到一个例子。Windows Installer不支持自动更新,也不会处理自动更新的交付。我工作的公司销售产品目标。以下是我最近为一位客户所做的工作: 用户界面正在以登录用户的身份运行 该服务正在作为系统运行。该服务检查内容并将其下载到临时目录。然后,它使用/JM命令播发MSI。安装程序现在可以由非特权用户安装 该服务向应用程序发送一条IPC消息,告知该安装了。应用程序启动安装程序,并向其传递指示重新启动应用程序的标志。应用程序退出释放锁定的文件 在安装程序结束时,该标志会导致安装程序重新启动应用程序 还可以看看wuw4库。它有助于创建许多这样的解决方案
这是一个复杂的模式,但效果非常好。我拥有一家公司,可以帮助您制定此解决方案。:) 以下是我通常会做的事情(这只是我如何更新程序的一个概念):
- 使用
或任何其他Advanced Installer
支持MSI Installer/packer
打包更新程序的文件。在继续下一步之前,您需要正确设置参数并进行测试命令行
- 转到
->选择您的项目,然后->属性->生成事件Visual Studio
- 在“
”文本框中,输入先前创建的命令行参数,然后单击确定Post Build event command line
- 现在,无论何时构建项目,VisualStudio都会自动使用MSI安装程序/打包器打包文件
- 最后一步是从命令行中查找
FTP客户端
- 设置正确的参数,并将其添加到上一个参数之后的“生成后事件”
- 现在,如果您再次使用visual studio构建项目。您的文件将自动打包,然后上载到服务器
编辑:还有一件事,您还可以添加一个简单的例程,在程序中的服务器上查找更新。类似于检查文件的MD5散列或文件版本等。一旦例程发现新的更新,它应该向用户提示,然后您可以告诉用户下载最新的更新等。您是否检查了应用程序虚拟化?
这是一种将可执行文件/msi流式传输到客户端的好方法,同时确保它始终运行最新的msi。我需要它通过internet自动更新。几个问题:是否需要提供服务?应用程序不能在启动时检查更新吗?服务可以访问哪个临时文件夹?出于安全考虑以及Windows Installer的工作方式,最好有一个提升的进程,该进程可以创建一个临时目录,非priv用户只能在该目录中读取并从中公布安装。然后,非priv最终用户进程可以启动安装,并且可以正常工作。如果非PrV用户检查启动时的更新,这会在路上造成高程问题。如果应用程序非常轻量级,不需要管理员私有安装,那么您可能需要考虑ClickOnce。但是,如果是每台机器安装,任何非priv用户都需要升级,那么MSI的这种模式就是您需要的。问题是,它是一个使用.NET组件的VB6应用程序,这使得ClickOnce很困难。我也很喜欢MSI的功能,比如self-heal。此外,该服务是否会像本回答中建议的那样导致不必要的提升提示?你能解释一下那是什么吗?我试着读过那个网站,但没有任何意义。你能看看这个吗?对不起,我不是想自动将包发送到服务器。我的意思是,用户将收到产品的自动更新。是的,您必须首先更新服务器上的文件。。。然后阅读编辑部分。你应该创建“更新”检查例程来检查服务器上的更新版本……我很好奇,你有没有实现过这个?