Dav*_*veO 1 windows-installer wix burn
我正在运行WiX捆绑包安装.如果运行,其中一个MSI软件包应该关闭应用程序:
<util:CloseApplication Id="CloseApplication" Target="My App.exe">1</util:CloseApplication>
Run Code Online (Sandbox Code Playgroud)
这是<Product>元素之前的<Feature>元素.我添加了1以确保条件为真.
MSI日志有这样的说法:
MSI (s) (14:94) [21:30:13:979]: Doing action: WixCloseApplications
Action ended 21:30:13: CreateFolders. Return value 1.
MSI (s) (14:68) [21:30:13:993]: Invoking remote custom action. DLL: C:\Windows\Installer\MSI5D24.tmp, Entrypoint: WixCloseApplications
MSI (s) (14!CC) [21:30:14:023]: PROPERTY CHANGE: Adding WixCloseApplicationsDeferred property. Its value is 'My App.exe2'.
Action start 21:30:13: WixCloseApplications.
MSI (s) (14!CC) [21:30:14:023]: Doing action: WixCloseApplicationsDeferred
Action start 21:30:14: WixCloseApplicationsDeferred.
Action ended 21:30:14: WixCloseApplicationsDeferred. Return value 1.
MSI (s) (14:94) [21:30:14:052]: Doing action: InstallFiles
Action ended 21:30:14: WixCloseApplications. Return value 1.
Action start 21:30:14: InstallFiles.
Run Code Online (Sandbox Code Playgroud)
如果我像这样设置提示'否':
<util:CloseApplication Id="CloseApplication" Description="Closing running application" Target="My App.exe" RebootPrompt="no" ElevatedCloseMessage="no" CloseMessage="no">1</util:CloseApplication>
Run Code Online (Sandbox Code Playgroud)
日志说明了这一点:
MSI (s) (50:04) [21:43:40:214]: Doing action: WixCloseApplications
Action ended 21:43:40: CreateFolders. Return value 1.
MSI (s) (50:14) [21:43:40:238]: Invoking remote custom action. DLL: C:\Windows\Installer\MSIFFA9.tmp, Entrypoint: WixCloseApplications
Action start 21:43:40: WixCloseApplications.
MSI (s) (50:04) [21:43:40:333]: Doing action: InstallFiles
Action ended 21:43:40: WixCloseApplications. Return value 1.
Action start 21:43:40: InstallFiles.
Run Code Online (Sandbox Code Playgroud)
无论哪种方式安装完成,但原始应用程序仍在运行,并且不会关闭.
有问题的应用程序是WPF应用程序,我有<MajorUpgrade Schedule="afterInstallExecute" ...安装程序使用从WiXBA修改的托管boostrapper运行.
我也无法使CloseApplication工作,我没有付出太多努力,但我正在使用不同的方法来关闭使用taskkill和QtExec的应用程序,如下所示:
<Property Id="QtExecCmdLine" Value='"[WindowsFolder]\System32\taskkill.exe" /F /IM APP.EXE'/>
<CustomAction Id="APP.TaskClose" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="immediate" Return="ignore"/>
<InstallExecuteSequence>
<Custom Action="APP.TaskClose" After="InstallInitialize"/>
</InstallExecuteSequence>
Run Code Online (Sandbox Code Playgroud)
注意这是immediateCA,要运行它,deffered请查看wix文档:http://wixtoolset.org/documentation/manual/v3/customactions/qtexec.html
| 归档时间: |
|
| 查看次数: |
3071 次 |
| 最近记录: |