2011-07-19 46 views
5

これに関連するstackoverflowに関するいくつかの関連する質問がありますが、私が観察している特定の動作には対応していないようです。Windowsサービスは停止せず、アンインストール時に削除されません(Wix)

私はWix 3.0 .wxsファイルで次のように定義されたWindowsサービスを持っています。

<Component Id='Service' Guid='3c658a54-b236-11e0-bbf6-039615e482ae' > 

    <File Id='ServiceEXE' Name='m_agent_service.exe' 
      Vital='yes' Source='..\m_agent_service.exe' 
      KeyPath='yes' /> 

    <ServiceInstall Id='MerakiServiceInstall' 
     Vital='yes' 
     Name='MerakiPCCAgent' DisplayName='Meraki Client Insight Agent $(env.VERSION)' Description="Meraki Client Insight Monitoring and Management Service" 
     Type='ownProcess' Interactive='no' Start='auto' ErrorControl='normal'> 
    </ServiceInstall> 

    <ServiceControl Id='MerakiServiceControl' 
     Name='MerakiPCCAgent' 
     Start='install' Stop='both' Remove='uninstall' 
     Wait='yes' /> 
</Component> 

.MSIをインストールすると、サービスがインストールされ実行されています。すばらしいです。

その後、(msiexec/xを実行するか、またはコントロールパネルからソフトウェアの追加と削除を使用して)アンインストールすると、サービスは実行され続け、が削除されません。実際には、サービス自体のログから、サービス停止コードが呼び出されていないことがわかります。 (私は「SC停止」を使用する場合、例えば、私はきれいに実行されているサービスのシャットダウンコードを参照ください。)ここで

がします。msiexec/xのアンインストールログからのいくつかの顕著な部品です:

MSI (s) (14:04) [11:33:54:692]: 1 application(s) had been reported to have files 
in use. 
Info 1603. The file C:\Program Files\Meraki\PCC Agent 1.0.67\m_agent_service.exe 
is being held in use by the following process: Name: m_agent_service, Id: 3120, 
Window Title: '(not determined yet)'. Close that application and retry. 
MSI (c) (40:78) [11:33:54:692]: File In Use: -m_agent_service- Window could not 
be found. Process ID: 3120 
MSI (c) (40:78) [11:33:54:692]: No window with title could be found for FilesInUse 

[...] 

Action start 11:33:57: UnpublishFeatures. 
MSI (s) (14:04) [11:33:57:379]: Doing action: StopServices 
MSI (s) (14:04) [11:33:57:379]: Note: 1: 2205 2: 3: ActionText 
Action ended 11:33:57: UnpublishFeatures. Return value 1. 
Action start 11:33:57: StopServices. 
MSI (s) (14:04) [11:33:57:379]: Doing action: DeleteServices 
MSI (s) (14:04) [11:33:57:379]: Note: 1: 2205 2: 3: ActionText 
Action ended 11:33:57: StopServices. Return value 1. 
Action start 11:33:57: DeleteServices. 
MSI (s) (14:04) [11:33:57:379]: Doing action: RemoveFiles 

[...] 

MSI (s) (14:04) [11:33:57:645]: Product: Meraki Client Insight Agent -- Removal 
completed successfully. 

MSI (s) (14:04) [11:33:57:645]: Windows Installer removed the product. Product N 
ame: Meraki Client Insight Agent. Product Version: 1.0.67. Product Language: 103 
3. Removal success or error status: 0. 
+0

作成しているサービスは、他のファイルやアセンブリに依存していますか?いいえ、ありがとうございます。その場合は、サービスのプロセスIDを取得してプロセスを終了する必要があります。サービスをアンインストールすることができます –

答えて

0

をチェック詳細ログファイルを開き、コンポーネントが変更されていることを確認します。機能がオフになっているか、コンポーネント/条件によってコンポーネントがスキップされている可能性があります。

5

私は脳波がありましたが、私は結局それを自分で修正したと思います - ポスト申し訳ありません!私と同じWixの本に続く他の初心者が同じ問題に遭遇した場合でも、何が修正されたのかを説明すると思います。

基本的に、コンポーネントのGuidを変更し、再インストールしてアンインストールしました。 (私は、GUIDの変更がベストプラクティスではないかもしれないことに気づいたが、これは私のために働いた)

私のインストーラでは、インストールをテストします。このWindowsサービスをインストールする私の最初の試みは、ServiceInstall要素だけのServiceControl要素なしで行われました。私はその後、インストールをテストし、それは働いたが、サービスはアンインストールで明らかに削除されませんでした。その後、Services.mscを使用して私のPCからサービスを手動で停止してアンインストールしました。

次に、私の本の次のセクションを読んで、ServiceControl要素が必要であることを認識し、作成してインストーラを再試行しましたが、同じGuidを使用していました。アンインストールはまだ正しく動作せず、私は私のインストーラで何か間違っていたと仮定しました。

同じGuidを使用してServiceControl要素を使用せずに以前のインストールを実行すると、PCが何らかの理由で壊れてしまい、新しいアンインストーラが正常に完了できなくなったということです。

これは私に教訓にしてください - 自分のPCでインストーラをテストしないでください!

+0

まさに私が今経験していることです。 10x :) – mynkow

+0

この問題が発生している場合は、これを試してみてください。 – joepetrakovich

関連する問題