0

これをここに置く方法がわからないので、最善を尽くします。私を助けてください

期待どおりにインストールおよびアンインストールするパッチ インストーラーがあります。しかし、プログラム ファイルからパッチをアンインストールした後、他のソフトウェアをアンインストールしようとしました。アンインストールでアンインストールを終了させるというポップメッセージが表示されました。

私が理解したのは、パッチのアンインストールの最後に、.exe ファイルを実行してプロセスを開始していることだけです。私のアンインストーラーはそのプロセスが終了するのを待ちますが、私はそれを終了したくありません。

私が持っている他のオプションは、パッチをアンインストールした後にユーザーに再起動を強制することですが、これはやりたくありません。

/ASYNC を指定して Exec、ExecDos、および ExecCmd を試しましたが、それでも同じ問題が発生します。

1を試す

ExecShell open "$INSTDIR\system\teven.exe" 

トライ2

ExecDos::exec /NOUNLOAD /ASYNC "$INSTDIR\system\teven.exe" ""
Pop $0
ExecDos::isdone /NOUNLOAD $0

誰でもこれを解決するのを手伝ってもらえますか? teven.exe を起動して実行したままにし、アンインストーラーが teven.exe の終了を待機しないようにするにはどうすればよいですか。

4

1 に答える 1

1

アンインストーラーの完了後に他のことを行う場合は、アンインストーラーを強制的に待機させる必要があります。プログラムの追加と削除からアンインストールすると、Windows は、アンインストーラーによって開始されたすべての子プロセスを強制的に待機させます...

待機したいのに、なぜ /ASYNC を使用しているのですか? (編集: 待ちたくないと思いますか?)ExecDos::isdoneは待ちません。チェックするだけExecDos::waitです。待ちたい場合に使用します。

高度なオプションを使用しておらず、stdin 入力が必要ない場合は、サードパーティのプラグインを使用する必要はありません。

teven がコンソール アプリケーションであり、コンソール ウィンドウを非表示にする (待機する) 場合:

nsExec::Exec '"$INSTDIR\system\teven.exe"'

それ以外は:

ExecWait '"$INSTDIR\system\teven.exe"'

実際に待ちたくない場合は、そのまま使用できますExecが、アンインストール時にWindowsが強制的に待機する可能性があります...

于 2012-10-25T10:06:15.507 に答える