tej*_*eja 3 windows-installer wix reboot file-in-use restartmanager
当有文件的更新补丁必须用现有文件替换时,如果其中一个文件正在被任何进程使用,则会弹出一个正在使用的文件对话框。我想避免那个对话框并使该文件排队等待安装,以便在系统重新启动时安装它。我已经读到在重新启动时排队更新文件是 Windows 安装程序的内置功能。有人可以建议我删除那个 FileInUse 对话框的方法。我尝试将“MsiRMFilesInUse”属性设置为“0”,但没有奏效。
Ste*_*mul 10
本质上:您可以完全静默运行(抑制正在使用的文件对话框),正常关闭锁定应用程序(应用程序更新以允许正常关闭 - 有或没有重启管理器支持),确保适当的服务控制(如果处理服务),强制终止正在运行的进程(“大锤方法”),如果检测到锁定则中止设置,在部署前需要注销,为每个版本安装到一个新文件夹(并行安装)等...
1)2)3)4)5)6)7)
下面是对使用中的文件问题和重新启动管理器的一个小钻取- 旨在快速查看使用中的文件和重新启动问题。
就你的实际问题而言。我不会惹FileInUse dialog(s). 它不会真正解决你的问题。也许考虑这些指针:
HKLM\Software\Policies\Microsoft\Windows\Installer。我想如果检测到锁定的文件,您也可以中止安装,或者您可以要求用户在运行安装之前注销- 如果您有分发系统。
请至少略读答案的其余部分以获取更多详细信息和上下文。
您的应用程序和服务应该准备好被重启管理器关闭,并保存干净重启所需的用户数据和状态信息。这需要对应用程序/服务进行更新和更改,以符合关闭和重新启动应用程序的标准。
重启管理器:是从 Windows Vista 和 Windows Server 2008 开始提供的新 C 样式 API。重启管理器由单个 DLL 组成,应用程序可以加载该DLL以访问重启管理器 API。这个想法是,通过让应用程序/服务遵循一组准则,重启管理器将在安装/更新期间自动关闭和重启您的应用程序:
本质上:
The whole idea is basically to prefer restarting applications rather than restarting the OS - and also to avoid reboots in general.。为此:1)您的应用程序RegisterApplicationRestart()使用为其最终重启指定的命令行调用- 它“注册”以进行重启管理。2)您的应用程序监视WM_QUERYENDSESSION消息并在被告知时以适当的方式优雅地关闭保存数据。3)然后重新启动管理器可以在安装完成后重新启动应用程序(可以禁用重新启动)。
更多技术资料:
重启管理器配置:有许多属性会影响重启管理器与 Windows 安装程序的运行方式:
使用Restart Manager 时,将使用MsiRMFilesInUse对话框而不是FileInUse 对话框来显示已锁定文件的应用程序列表。
注意!整个重启管理器功能也可以通过策略禁用:
HKLM\Software\Policies\Microsoft\Windows\Installer。如果您没有时间或资源来实现与Restart Manager 的正确互操作性(坦率地说,这是目前在 Windows 开发中花费您的资源的唯一明智之举),那么有一些事情可能对您有益知道:
FileInUse如果您在静默模式下安装安装程序,将不会出现对话框。但是,除非您指定REBOOT=ReallySuppress property.built-in MSI constructs到shut down services升级过程中-在业务控制表。App.exe -shutdown,某些应用程序在发送命令行时会正常关闭,尽管尚未编写为可与Restart Manager互操作。也许系统托盘应用程序不为用户保存数据?WiX:在 WIX 中强行杀死 windows 服务。VBScript:关闭使用 VBScript 的应用程序。Advanced Installer:如何检测或停止进程。Installshield:杀进程。终止进程文档。REINSTALLMODE="amus"在安装过程中使用强制覆盖文件?repair和modify场景中。一些进一步的链接:
| 归档时间: |
|
| 查看次数: |
3678 次 |
| 最近记录: |