2013-04-04 12 views
22

Visual Studio 2010でC#を使用してWindowsサービスを作成しました。インストールプロセスの自動化に関する多くの研究を行いました。アドバイスがたくさんありましたが、私のために働いた人はいませんでした。私が作成したWindowsサービスには多くの依存関係があり、インストール中にクライアントにUIのやりとりがないようにしたいと考えています。私はインストーラ内のすべての依存関係を含むこのためのセットアッププロジェクトを作成しました。関与Windowsサービスの展開を自動化する最適な方法は何ですか?

プロセス:

  • がWindowsサービス
  • プッシュセットアップファイル(.msi)の遠隔地へ
  • コールの.msiのビルドを作成し、ユーザーとの対話なしで静かにサービスをインストールします。 PowerShellスクリプトを実行し、サービス

をインストール遠隔地へ

  • をファイルをプッシュするPowerShellスクリプトを作成し

    • PowerShellのことを覚えておいてください:私はこれまで何をしたか

    スクリプト

    sc create "servicename" binpath="somepath" 
    

    は、セットアッププロジェクトを使用して作成された.msiファイルをインストールしないプロジェクトディレクトリからサービスをインストールするために使用されます。あなたがこれを理解していなければ、答えてください。

    考えられる解決策:

    今、私の質問です。 Windowsサービスインストーラをリモートの場所にプッシュするにはどうすればよいですか?カスタムビルド引数を作成し、msbuild拡張パックまたはExecタスクを使用してサービスをインストールするにはどうすればよいですか?

    私は、セットアッププロジェクトによって作成された(.MSI)サービスをインストールしていない人のために、これは愚かで刺激的な疑問に思えます。しかし、私の要件は、企業環境で数週間から解決しようとしています。

  • +0

    Windowsサービスの導入を自動化することに成功しましたか? – bhupinder

    答えて

    15

    私は仕事の大部分をpowershellスクリプトから実行します。

    1. 前述のようにmsbuild Execタスクを使用して、ビルドプロセスに追加します。 using the exec task to run your powershell scriptのかなり良い記事です。

    2. VS 2010を使用しているので、setup and deployment projectはかなり簡単です。ソリューションに1を追加し、サービスプロジェクトの出力を追加します。ここにはadding the setup project for a windows serviceに関する記事があります。

    3. powershellスクリプトを使用して、インストーラ.msiをリモートサーバーにコピーします。ファイル共有にアクセスできる場合は、単にcopy-item [source] [destination]を使用できます。

    4. リモートマシン上のサービスを停止します。あなたは、私もPowerShellのにパラメータの束を追加したい(this questionから)(get-service -ComputerName [destination] -Name [service-name]).Stop()

    5. 黙っpsexecpsexec \\remotecomputer "[msi-destination-path]" /qnHere's the rest of the command line options for the .msi.

    6. を使用して、サービスが(get-service -ComputerName [destination] -Name [service-name]).Start()

    を使用してサービスを開始し

    インストールを使用することができますデスティネーションサーバのスクリプト、サービス名などが含まれているため、ビルドプロセスのこの部分をより簡単に維持することができます。あなたのビルドエージェントは、ターゲットマシン上の管理者である必要があります。

    最後に、あなたのPowerShellビルドスクリプトをソース管理に入れてください!

    編集(2014年6月)
    VS 2013 has installer projects again!(申し訳ありませんが、VS 2012)

    はまた、セットアッププロジェクトを使用せずにWindowsサービスをインストールする方法についてthis awesome answerを発見した場合。

    +0

    Zacharyさん、これがインストールされることを祈っています –

    関連する問題