一般に、特定のプログラムをインストールするとき、インストールやインストールするソフトウェアに影響を与える他のプロセスがユーザーのコンピュータ上に存在しないことを誰もが望みます。インストールを実行する前に、Inno Setup を使用して、現在のシステムで実行されているプロセスを検出できます。ユーザーが特定のプロセスを実行している場合、この検出により、インストールを実行する前にプロセスを閉じるようにユーザーに効果的に促すことができます。このようにして、ソフトウェアをインストールするときに、関連プロセスによる傍受や競合によって引き起こされるインストール エラーは発生しません。
以下は、詳細な Inno Setup 検出実行プロセスとプロンプト終了ソリューション コードのコレクションです。これを Inno Setup スクリプトにコピーし、ニーズに応じて合理的に使用できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 4 4 45 46 47 48 49 50 51 52 53 54
55 56 57 |
; 免責事項: この例は WLDNA によって書かれました。転載される場合は、この説明を保存してください。ありがとうございます。 ;著者: WLDNA
#include "istask.ish" ;このインクルード オプションを必ず追加してください
[Setup] AppName=My Program AppVerName=My Program v 1.5 DefaultDirName={pf}\My Program OutputDir=userdocs:Inno Setup Examples Output Compression =lzma /ultra InternalCompressLevel=ultra ;SolidCompression=yes ;DisableDirPage=yes ;DisableReadyPage=yes
[CustomMessages] Tasks=QQ.exe ;複数のプロセスを検出したい場合は、%n 分割を使用できます。例: cmd.exe%nnotepad .exe
[コード] function InitializeSetup(): ブール値; begin Result := True;
if PDir ('ISTask.dll') <> '' then if RunTasks(CustomMessage('Tasks'), False, False) then begin if MsgBox('QQ が実行中であることが検出されたため、インストールを続行できません。' + #13#10 + #13#10 + ' [OK ] をクリックしますQQ を直接閉じるか、[キャンセル] をクリックしてインストールを終了します。', mbconfirmation, MB_OKCANCEL) = IDYES then begin KillTasks(CustomMessage('Tasks')); Result := True; end else Result := False; end end;
function InitializeUninstall(): Boolean; begin Result := True;
if PDir ('ISTask.dll') <> '' then if RunTask('QQ.exe', False) then begin if MsgBox('QQ が実行中であることが検出され、インストールを続行できません。' + #13#10 + #13#10 + 「OK」をクリックして QQ を直接閉じるか、「キャンセル」をクリックしてインストールを終了します。', mbconfirmation, MB_OKCANCEL) = IDYES then begin KillTask('QQ.exe'); 結果 := True; end else 結果 := False; end end; |
Inno Setup スクリプトを柔軟に使用すると、インストールの実行時に多くの操作を実行できます。重要な点はアイデアとやりたいことによって異なります。