ac# 4.0 Windows サービスを作成しました。サービスを特定のフォルダーにインストールするインストーラー プロジェクト (.msi) を作成しました。
プロセスを完全に自動化するために、インストーラー用のカスタム アクションの一部としてサービスをインストールしたいと考えています。
インストールするカスタム アクションをコーディングする方法、または msi をアンインストールするときに Windows サービスをアンインストールする方法を教えてください。
ac# 4.0 Windows サービスを作成しました。サービスを特定のフォルダーにインストールするインストーラー プロジェクト (.msi) を作成しました。
プロセスを完全に自動化するために、インストーラー用のカスタム アクションの一部としてサービスをインストールしたいと考えています。
インストールするカスタム アクションをコーディングする方法、または msi をアンインストールするときに Windows サービスをアンインストールする方法を教えてください。
ServiceInstallerクラスを使用できます。簡単な解決策は、ツールを見つけinstallutil
てService.exeに対して実行することですが、インストールが成功したかどうかを確認するために出力をキャプチャする必要があり、、、、、およびフェーズをあまり制御できませんInstall
。Commit
Rollback
Uninstall
簡単な答え:しないでください。適切な方法は、MSIデータベース自体、つまりテーブルServiceInstall
を使用してインストールすることです。ServiceControl
MSIを作成するためのすべての「便利な」IDEとWiXには、この組み込み機能を利用するためのプリミティブが付属しています。
これがベストプラクティスDllRegisterServer
である理由は、COM(DLL)を呼び出して登録する代わりにMSIにCOM登録を含めるのと同じように、ユーザーがアプリケーションを削除しようとしたときにアプリケーションが機能しなくなる可能性があるためです。
データベースアクションは、たとえばWindows自体のアップグレード後など、新しいWindowsインストーラーでも実行できますが、コードの実行が拒否されたり、他の理由で実行されなかったりする場合があります。