1

ac# 4.0 Windows サービスを作成しました。サービスを特定のフォルダーにインストールするインストーラー プロジェクト (.msi) を作成しました。

プロセスを完全に自動化するために、インストーラー用のカスタム アクションの一部としてサービスをインストールしたいと考えています。

インストールするカスタム アクションをコーディングする方法、または msi をアンインストールするときに Windows サービスをアンインストールする方法を教えてください。

4

2 に答える 2

2

ServiceInstallerクラスを使用できます。簡単な解決策は、ツールを見つけinstallutilてService.exeに対して実行することですが、インストールが成功したかどうかを確認するために出力をキャプチャする必要があり、、、、、およびフェーズをあまり制御できませんInstallCommitRollbackUninstall

于 2012-05-16T23:52:54.607 に答える
1

簡単な答え:しないでください。適切な方法は、MSIデータベース自体、つまりテーブルServiceInstallを使用してインストールすることです。ServiceControlMSIを作成するためのすべての「便利な」IDEとWiXには、この組み込み機能を利用するためのプリミティブが付属しています。

これがベストプラクティスDllRegisterServerである理由は、COM(DLL)を呼び出して登録する代わりにMSIにCOM登録を含めるのと同じように、ユーザーがアプリケーションを削除しようとしたときにアプリケーションが機能しなくなる可能性があるためです。

データベースアクションは、たとえばWindows自体のアップグレード後など、新しいWindowsインストーラーでも実行できますが、コードの実行が拒否されたり、他の理由で実行されなかったりする場合があります。

于 2012-05-16T23:56:12.793 に答える