2016-04-16 22 views
0

私は、1つのWindowsサービスアプリケーションと1つのUIアプリケーション(それぞれ独自のスタンドアロンEXE)で構成されるアプリケーションに対して、Inno Setup 5.5.6(u)を使用してインストーラを作成しています。インストーラでは、サービスとUIアプリの両方をインストールするか、サービスなしでUIアプリのみをインストールするかを選択できます。すべてこれはうまく動作します。特定のアプリケーションのみを閉じるように促す

インストーラが既存のインストールで実行されており、インストーラがサービスが実行中であることが検出された場合に問題が発生します。私は、アップデートが実行される前に明示的にサービスを停止するコードを持っていますが、コードが実行される前にこの他の画面がキャッチされ、プロセスを自動的に終了するためにInno Setupをユーザーに提供します。

procedure CurStepChanged(CurStep: TSetupStep); 
begin 
    case CurStep of 
    ssInstall: begin 
     //Just before install starts 
     if ServiceExists(SVC_NAME) then begin   
     StopMyService; 
     end else begin 
     ServiceWasRunning:= True; 
     end; 
     InstallMyService; //Ignores if already exists 
    end; 
    ssPostInstall: begin 
     //Just after install finishes 
     if ServiceWasRunning then begin 
     StartMyService; 
     end; 
    end; 
    end; 
end; 

今、私は完全にこの検出を無効にしたくない - 私は、サービスの実行可能ファイルをチェックする気にしないようにインストーラに指示し、それでもUI実行可能ファイルを確認したいです。

どうすればよいですか?

答えて

1

もう少し詳しく調べたところ、解決策が見つかりました。

[Setup]セクションに、CloseApplicationsFilterという行を追加し、検出するアプリケーションファイル名のみに設定します。最初は、このプロパティは拡張子ワイルドカード(例:*.exe)のみを受け入れると思っていましたが、完全なファイル名も機能します。

関連する問題