none
.NET5で作成したWindowsサービスアプリをVisualStudioInstallerProjectでインストール時サービス登録できない RRS feed

  • 質問

  • ・前提

     現在、VisualStudio2019Professionalを使用して、とあるアプリケーションを作成しています

     そのアプリケーションは、すべて.NET5で記述されており、WindowsServiceを含みます

     .NET5でのWindowsServiceの作成の仕方は以下のURLあたりを参考にして作成しました

     https://devblogs.microsoft.com/ifdef-windows/creating-a-windows-service-with-c-net5/

     さて、このWindowsServiceをインストール時にサービスとして登録がしたいです

     現在、インストーラの作成にはVisualStudioInstallerProjectを使用しています

    ・問題

     このVisualStudioInstallerProjectを使用した場合、インストール時にサービスの登録ができず、また、インストールそのものに失敗します

     

     再現の方法としては

     1. インストーラのプロジェクトを右クリックしてAdd > プロジェクト出力

     2. この時、プロジェクトはWindowsServiceのプロジェクト、リストボックス項目は「項目の公開」、構成は任意(ここではアクティブでも良いでしょう)としました

     3. インストーラのプロジェクトを右クリックして View > カスタム動作

     4. メインのペインにCustom Actionsが表示されるので、Custom Actionsを右クリックして「カスタム動作の追加」を選択

     5. 先ほど追加したWindowsServiceの「項目の公開」を選択

     6. 設定は完了したので、三度インストーラのプロジェクトを右クリックして、「ビルド」を選択

     7. ビルドが完了したら四度インストーラのプロジェクトを右クリックして「インストール」を選択

     8. インストーラの次へを進めていくと、現象は発生します

      ※この時のエラーメッセージは「このWindows インストーラー パッケージには問題があります。セットアップの一部として実行されるプログラムは正しく完了しませんでした。サポート担当者またはパッケージのベンダーに問い合わせてください。」です

    ・求めるもの

     ・VisualStudioInstallerProjectでサービスの登録は可能かどうかの可否

     ・不可能である場合、代替案のご提示及び参考資料(恐らく代替案としてはWiXあたりが濃厚だとは思いますが。。。)

    以上、よろしくお願い致します

    2021年3月19日 8:33

回答

  • VSインストーラプロジェクトでCustom Actionsを追加しようとすると「System.Configuration.Install.Installer」クラスが必要です。

    こちらは、.NET Core 系ではサポートされていません。なので、別途 .NET Framework ベースで作成したものを使うことになります。

    参考にしたブログをざっと見た感じでは、WindowsInstaller のサービス登録 で登録することになるのでは?と思います。

    VSインストーラプロジェクトはWindowsInstaller のサービス登録機能は提供していないので、WiXやInstallShield などを使うほうが良いと思いますよ。


    とっちゃん@わんくま同盟, Visual Studio and Development Technologies http://blogs.wankuma.com/tocchann/default.aspx

    • 回答としてマーク cocoalix 2021年3月19日 15:43
    • 回答としてマークされていない cocoalix 2021年3月19日 15:43
    • 回答としてマーク cocoalix 2021年3月19日 15:44
    2021年3月19日 9:26

すべての返信

  • VSインストーラプロジェクトでCustom Actionsを追加しようとすると「System.Configuration.Install.Installer」クラスが必要です。

    こちらは、.NET Core 系ではサポートされていません。なので、別途 .NET Framework ベースで作成したものを使うことになります。

    参考にしたブログをざっと見た感じでは、WindowsInstaller のサービス登録 で登録することになるのでは?と思います。

    VSインストーラプロジェクトはWindowsInstaller のサービス登録機能は提供していないので、WiXやInstallShield などを使うほうが良いと思いますよ。


    とっちゃん@わんくま同盟, Visual Studio and Development Technologies http://blogs.wankuma.com/tocchann/default.aspx

    • 回答としてマーク cocoalix 2021年3月19日 15:43
    • 回答としてマークされていない cocoalix 2021年3月19日 15:43
    • 回答としてマーク cocoalix 2021年3月19日 15:44
    2021年3月19日 9:26
  • @とっちゃん@わんくま同盟 さん

    早速のご返事ありがとうございます。

    参考にしたブログをざっと見た感じでは、WindowsInstaller のサービス登録 で登録することになるのでは?と思います。

    > VSインストーラプロジェクトはWindowsInstaller のサービス登録機能は提供していないので、WiXやInstallShield などを使うほうが良いと思いますよ。

    あぁ、やはりそうなんですね。。。

    ちょっととっつきづらい印象がありますが、素直にWiXあたりの使用を検討します。

    ご回答ありがとうございました。

    2021年3月19日 15:44
  • メンテされてるかどうかは確認していませんが、WiXのチュートリアルの日本語訳もあります。

    ご参考までに。

    WiX チュートリアル 日本語訳 (wix-tutorial-ja.github.io)


    とっちゃん@わんくま同盟, Visual Studio and Development Technologies http://blogs.wankuma.com/tocchann/default.aspx

    2021年3月19日 16:13