アンインストール中に Inno Setup がコンポーネントの削除に失敗するのは、プログラムがまだ実行中であり、実行可能ファイルを削除できないためです。アンインストールを続行する前に、実行中かどうかを確認するにはどうすればよいですか?
26230 次
4 に答える
9
AppMutex
このディレクティブを使用して、アプリケーションの実行中にアンインストーラーが続行されないようにします。
[Setup]
AppMutex=MyProgMutex
アプリケーションは、ディレクティブで指定されたミューテックスを作成する必要があります。例については、リンクされたAppMutex
ディレクティブのドキュメントを参照してください。
アンインストーラーにアプリケーションを強制終了させたい場合は、アプリケーションがまだ実行されているときに、代わりに次のコードを使用します。
function InitializeUninstall(): Boolean;
var
ErrorCode: Integer;
begin
if CheckForMutexes('MyProgMutex') and
(MsgBox('Application is running, do you want to close it?',
mbConfirmation, MB_OKCANCEL) = IDOK) then
begin
Exec('taskkill.exe', '/f /im MyProg.exe', '', SW_HIDE,
ewWaitUntilTerminated, ErrorCode);
end;
Result := True;
end;
上記のAppMutex
ディレクティブと同様に、アプリケーションはCheckForMutexes
呼び出しで指定されたミューテックスを作成する必要があります。
インストーラーの場合、これをコーディングする必要はありません。インストーラーには再起動マネージャーが組み込まれています。Inno Setup で「taskkill /f /im」を使用して (再) インストールする前にプロセスを強制終了するを
参照してください。
于 2016-09-23T06:05:10.353 に答える