代码之家  ›  专栏  ›  技术社区  ›  Daniel Schaffer

Wix的util:CloseApplication extension 似乎不起作用

  •  4
  • Daniel Schaffer  · 技术社区  · 15 年前

    我正在尝试在使用Wix卸载之前关闭一个进程。我已经确认,只要有一个可见的窗口,它就可以工作,但是如果没有可见的窗口(由于它是一个系统托盘应用程序,所以这个应用程序大多数时候都是这样),卸载程序就会挂起,并最终继续卸载,让进程继续运行。

    根据 this forum post ,似乎Wix在过去关闭最小化的应用程序时遇到了问题,所以我想知道这是否相关?

    关于我还能做些什么来确保进程关闭,有什么建议吗?有什么方法可以让我用win32api在我的应用程序中捕获消息吗?

    以下是CloseApplication声明:

    <util:CloseApplication Id="CloseApp" CloseMessage="yes" Target="App.exe" RebootPrompt="yes" />
    

    以下是自定义操作:

    <Custom Before="InstallInitialize" Action="WixCloseApplications">REMOVE = "ALL"</Custom>
    
    3 回复  |  直到 14 年前
        1
  •  5
  •   Rob Mensching    14 年前

    看起来你在安排 WixCloseApplications 安装事务之前的自定义操作。自定义操作的工作方式是,计划一个实际关闭应用程序的延迟操作。除非在交易过程中发生,否则它无法完成这项工作( After="InstallInitialize"

    修复可能相当简单。拆下 Custom/@Action="WixCloseApplications" 元素。

        2
  •  2
  •   Rudolf Dvoracek    9 年前

    装配。 Wix公司 元素包含的定义

    <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
    

    我注意到您应该在InstallInitialize之前更改要执行的自定义操作。

    <Custom Before="InstallInitialize" Action="WixCloseApplications">REMOVE = "ALL"</Custom>
    

    msiexec /i MyApplication.msi /l*v MyLogFile.txt
    
        3
  •  0
  •   Dudi Amar    8 年前

    我也面临这个问题。

    <Custom Before="InstallValidate" Action="WixCloseApplications"/>
    
    推荐文章