1

障害のある通知領域 (トレイ) アプリをデプロイしました。最上位のウィンドウがなかったため、WM_CLOSE イベントを受け取りませんでした。つまり、アップグレードまたはアンインストール中に Windows インストーラーが組み込み関数を使用してそれを閉じようとすると (アプリをシャットダウンするダイアログが表示されます)、アプリを閉じることができません。トレイ プロセスはまだ Taskmanager で実行されているため、exe ファイルはロックされています。

私は次のことを望みます:

セットアップは、実行中のトレイ アプリケーションを特定のファイル/インストール バージョンまで強制終了する必要があります。または、これが不可能な場合は、古いバージョンのインストールを防止し、手動で削除するようユーザーに伝えます。

「シャットダウンしてください」ダイアログが表示される前に、古いバージョンのメモ帳を (テストとして) 起動しようとしましたが、成功しませんでした。

Before="ValidateInstall" で起動しようとしましたが、実行されませんでした。After="ValidateInstall" で起動しようとした後、メモ帳を開きましたが、セットアップがファイルの実行を検出した後に実行しました。

おそらく、すべてのプロパティが Before="ValidateInstall" に設定されているわけではありませんか?

おそらく私のカスタム アクションは何らかの形で自動的に延期されますか?

いくつかのコード スニペット:

<Product Id="*" 
    Codepage="65001" 
    Language="!(loc.LANGUAGE)" 
    Manufacturer="$(var.AppManufacturer)" 
    Name="$(var.AppCode), $(var.AppVersion)"
    UpgradeCode="$(var.AppUpgradeCode)"
    Version="$(var.AppVersion)">

    <Package Comments="$(var.AppCode), 
            $(var.AppVersion)" 
            Compressed="yes" 
            InstallPrivileges="limited"
            InstallScope="perUser" 
            InstallerVersion="301" 
            Languages="!(loc.LANGUAGE)" 
            Manufacturer="$(var.AppManufacturer)" 
            Platform="x86"  
            SummaryCodepage="1252"/>

    <Property Id="PROP_APP_IGNORES_SHUTDOWN">
       <DirectorySearch Id="DirSrch_PIAS_Version" Path="[DIR_ID_USERPROGRAMFOLDER]">
           <FileSearch Name="$(var.MyExe.TargetFileName)"
                       MaxVersion="6.1.3432.99999"/> 
       </DirectorySearch>
    </Property>

    <Property Id="QtExecCmdLine" 
            Value='"$(var.SysSystem32)\taskkill.exe" /F /IM $(var.MyExe.TargetFileName)'/>
    <CustomAction  Id="CA_KillApp" 
                BinaryKey="WixCA" 
                DllEntry="CAQuietExec" 
                Execute="immediate" 
                Impersonate="yes" 
                Return="ignore" />

    <Property Id='NOTEPAD'>$(var.SysWindir)\Notepad.exe</Property>
    <CustomAction Id="CA_OpenNotepad" 
                Property="NOTEPAD" 
                ExeCommand="" 
                Return="asyncNoWait" />

    <MajorUpgrade Schedule="afterInstallValidate" 
              DowngradeErrorMessage="[VSDVERSIONMSG]" 
              AllowDowngrades="no"  
              AllowSameVersionUpgrades="yes" />
    <InstallExecuteSequence>
        <Custom Action="CA_OpenNotepad" Before="CA_KillApp">PROP_APP_IGNORES_SHUTDOWN</Custom>
        <Custom Action="CA_KillApp" Before="InstallValidate">PROP_APP_IGNORES_SHUTDOWN</Custom>
    </InstallExecuteSequence>
</Product>
4

0 に答える 0