ClickOnce アプリケーションのコマンド ラインからのビルド

Visual Studio では、統合開発環境 (IDE) で作成されたプロジェクトであってもコマンド ラインからビルドできます。 実際には、.NET Framework のみがインストールされている別のコンピューターで、Visual Studio を使用して作成されたプロジェクトをリビルドできます。 この機能を使うと、たとえば中央のビルド ラボで自動化されたプロセスを使って、または、プロジェクト自体をビルドする範囲を超えた高度なスクリプト手法を使って、ビルドを再現できます。

Note

コマンド ラインから .NET ClickOnce アプリケーションをビルドするには、「.NET ClickOnce アプリケーションをコマンド ラインからビルドする」を参照してください。

MSBuild を使用して .NET Framework ClickOnce アプリケーションの配置を再現する

コマンド ラインで msbuild /target:publish を呼び出すと、このコマンドにより MSBuild システムでプロジェクトをビルドし、publish フォルダーに ClickOnce アプリケーションを作成するように指示されます。 このコマンドは、IDE で [発行] コマンドを選択することと同等です。

このコマンドでは、msbuild.exe が実行されます。これは、Visual Studio のコマンドプロンプト環境のパスにあります。

"ターゲット" は、コマンドをどのように処理するかについての、MSBuild に対するインジケーターです。 主要なターゲットは、"ビルド" ターゲットと "発行" ターゲットです。 ビルド ターゲットは、IDE でビルド コマンドを選択する (または F5 キーを押す) ことに相当します。 プロジェクトをビルドするだけの場合は、「msbuild」と入力します。 このコマンドが機能するのは、ビルド ターゲットが、Visual Studio によって生成されるすべてのプロジェクトの既定のターゲットであるためです。 そのため、ビルド ターゲットを明示的に指定する必要はありません。 したがって、「msbuild」と入力するのは、「msbuild /target:build」を入力するのと同じ操作になります。

/target:publish コマンドでは、MSBuild に、発行ターゲットを呼び出すように指示します。 発行先はビルド ターゲットに依存します。これは、発行操作がビルド操作のスーパーセットであることを意味します。 たとえば、Visual Basic または C# のソース ファイルを変更した場合、発行の操作によって対応するアセンブリが自動的にリビルドされます。

Mage.exe コマンド ライン ツールを使うことで、ClickOnce マニフェストを作成する完全な ClickOnce の配置を生成する方法については、「チュートリアル: ClickOnce アプリケーションを手動で配置する」を参照してください。

MSBuild で基本的な ClickOnce アプリケーションを作成してビルドする

発行プロファイルを作成する最も簡単な方法は、Visual Studio を使用することです。 MSBuild を使って発行するには、発行プロファイルが必要です。

ClickOnce プロジェクトを作成して発行する

  1. Visual Studio を起動し、新しいプロジェクトを作成します。

    Windows フォーム アプリ (.NET Framework) または WPF アプリ (.NET Framework) プロジェクト テンプレートを選択し、プロジェクトに CmdLineDemo という名前を付けます。

  2. [ビルド] メニューの [発行] コマンドを選びます。

    この手順により、ClickOnce アプリケーションの配置を生成するようにプロジェクトが適切に構成されます。

    発行ウィザードが表示されます。

  3. 発行ウィザードで、[完了] を選びます。

    Visual Studio によって、Publish.htm という名前の既定の Web ページが生成され、表示されます。

  4. プロジェクトを保存し、それが格納されるフォルダーの場所をメモします。

    上記の手順では、初めて発行された ClickOnce プロジェクトが作成されます。 これで、IDE の外部でビルドを再現することができます。

コマンド ラインからビルドを再現する

  1. Visual Studio を終了します。

  2. Windows の [スタート] メニューから、[ツール]>[コマンド ライン]>[開発者コマンド プロンプト] の順に選びます。

    Visual Studio の開発者コマンド プロンプトが開きます。

  3. [Visual Studio コマンド プロンプト] で、現在のディレクトリとして前にビルドしたプロジェクトの場所が示されることを確認します。

    プロジェクト ディレクトリで作業していない場合は、chdir C:\Users\username\source\repos\CmdLineDemo のようなコマンドを入力して、目的の場所に変更します。

  4. 前のセクションで作成した既存のファイルを削除するには、「rmdir /s publish」と入力します。

    この手順は省略できますが、このようにすると、コマンド ラインのビルドによってすべての新しいファイルが確実に生成されます。

  5. msbuild /target:publish」と入力します。

    上記の手順では、プロジェクトの Publish という名前のサブフォルダーに、完全な ClickOnce アプリケーションの配置が生成されます。 CmdLineDemo.application は ClickOnce 配置マニフェストです。 CmdLineDemo_1.0.0.0 フォルダーには、ファイル CmdLineDemo.exeCmdLineDemo.exe.manifest (ClickOnce アプリケーション マニフェスト) が含まれています。 Setup.exe はブートストラップで、既定では .NET Framework をインストールするように構成されています。 The DotNetFX フォルダーには、.NET Framework の再頒布可能ファイルが含まれています。 この場所のファイルは、Web 経由で、または UNC や CD/DVD を使ってアプリケーションを配置するために必要な全ファイルのセットで構成されます。

Note

MSBuild システムでは、PublishDir オプションを使い、msbuild /t:publish /p:PublishDir="<specific location>" などのように出力の場所を指定します。

発行プロセスの出力

MSBuild では、PublishDir プロパティを使って、ビルド成果物などのビルド出力の場所を設定します。 MSBuild で発行先として使用される PublishDir 値は、既定では、プロジェクト ファイルの PublishDir プロパティから取得されます (.NET Framework)。 この動作は、MSBuild コマンド ラインで /p スイッチを使ってオーバーライドすることができます。 設定をオーバーライドすると、指定した場所に発行出力が書き込まれます。 出力は、発行の MSBuild ステップの間に生成されます。 AfterTargets="ClickOncePublish" を含むすべての MSBuild ターゲットは、このコピーが作成された後で実行されます。

PublishUrl プロパティは、PublishDir とは異なり、MSBuild ステップでは使われません。 MSBuild を直接呼び出してコマンド ラインから発行する場合、PublishUrl は無視されます。

Visual Studio IDE で発行を開始すると、Visual Studio によって MSBuild が呼び出され、成果物は PublishDir の場所に発行されます。 この MSBuild ステップが完了すると、Visual Studio により ClickOnce 固有のファイルが PublishUrl で指定されている場所に発行されます。 この 2 番目のステップは、Visual Studio プロセス内で実行されます。 これは Visual Studio のプロセスであるため、このステップ中に実行するターゲットやタスクを挿入することはできません。

Visual Studio を使わない MSBuild の展開では、展開ディレクトリ内のすべてのファイルが展開先またはメディアにコピーされます。 配置ディレクトリには、Web サイトや FTP サイトのフォルダー、ファイル共有、または CD-ROM を指定できます。 たとえば、サード パーティのツールやカスタム MSBuild タスクを使って、ClickOnce ファイルをコピーできます。

PublishUrl フォルダーで後処理を行うには、別のスクリプトを使う必要があります。

重要

PublishDirPublishUrl と同じ場所に設定されている場合、コンパイル出力が重複して PublishUrl の場所にコピーされます。 Visual Studio 2022 バージョン 17.4 以降では、新しいプロファイルを作成することでこの問題を回避できます。 新しいプロファイルでは、PublishDirPublishUrl とは異なる場所に設定されます。 発行の操作の最後に、関連する ClickOnce ファイルが PublishDir から PublishUrl の場所にコピーされます。

[発行] プロパティ

上記の手順でアプリケーションを発行すると、発行ウィザードによって、以下のプロパティがプロジェクト ファイルに挿入されます。 これらのプロパティは、ClickOnce アプリケーションがどのように生成されるかに直接影響を及ぼします。

CmdLineDemo.vbproj / CmdLineDemo.csproj 内は次のようになっています。

<AssemblyOriginatorKeyFile>WindowsApplication3.snk</AssemblyOriginatorKeyFile>
<GenerateManifests>true</GenerateManifests>
<TargetZone>LocalIntranet</TargetZone>
<PublisherName>Microsoft</PublisherName>
<ProductName>CmdLineDemo</ProductName>
<PublishUrl>http://localhost/CmdLineDemo</PublishUrl>
<Install>true</Install>
<ApplicationVersion>1.0.0.*</ApplicationVersion>
<ApplicationRevision>1</ApplicationRevision>
<UpdateEnabled>true</UpdateEnabled>
<UpdateRequired>false</UpdateRequired>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdateUrlEnabled>false</UpdateUrlEnabled>
<IsWebBootstrapper>true</IsWebBootstrapper>
<BootstrapperEnabled>true</BootstrapperEnabled>

.NET Framework プロジェクトでは、プロジェクト ファイル自体を変更することなく、コマンド ラインでこれらのプロパティをオーバーライドすることができます。 たとえば、次のコードでは、ブートストラップを使わずに ClickOnce アプリケーションの配置がビルドされます。

msbuild /target:publish /property:BootstrapperEnabled=false

発行プロパティは Visual Studio で、プロジェクト デザイナー[発行][セキュリティ][署名] の各プロパティ ページから制御されます。

以下の発行プロパティは、アプリケーション デザイナーのさまざまなプロパティ ページで設定されます。

  • AssemblyOriginatorKeyFile を使って、ClickOnce アプリケーション マニフェストへの署名に使うキー ファイルを指定します。 この同じキーを、アセンブリに厳密な名前を割り当てるために使用することもできます。 このプロパティは、プロジェクト デザイナー[署名] ページで設定されます。

以下のプロパティは、[セキュリティ] ページで設定されます。

  • [ClickOnce セキュリティ設定を有効にする] によって、ClickOnce マニフェストを生成するかどうかを指定します。 プロジェクトが最初に作成されるときには、ClickOnce マニフェストの生成は既定で無効になっています。 初めて発行するときに、ウィザードによって自動的にこのフラグがオンにされます。

  • TargetZone を使って、ClickOnce アプリケーション マニフェストに出力する信頼のレベルを指定します。 指定できる値は、"Internet"、"LocalIntranet"、"Custom" です。Internet や LocalIntranet を指定すると、既定のアクセス許可のセットが ClickOnce アプリケーション マニフェストに出力されます。 LocalIntranet が既定値で、これは基本的に完全な信頼を意味します。 Custom は、基本の app.manifest ファイルで明示的に指定されているアクセス許可のみが、ClickOnce アプリケーション マニフェストに出力されることを指定します。 app.manifest ファイルは、信頼情報の定義のみが含まれる部分的なマニフェスト ファイルです。 これは非表示のファイルで、[セキュリティ] ページでアクセス許可を構成するときに、プロジェクトに自動的に追加されます。

以下のプロパティは、[発行] ページで設定されます。

  • PublishUrl は、IDE 内でアプリケーションの発行先となる場所です。 InstallUrl プロパティと UpdateUrl プロパティの両方が指定されていない場合、ClickOnce アプリケーション マニフェストに挿入されます。

  • ApplicationVersion を使って、ClickOnce アプリケーションのバージョンを指定します。 バージョンは 4 桁の数字です。 最後の数字が "*" (アスタリスク) である場合は、ApplicationRevision が、ビルド時にマニフェストに挿入される値に置き換えられます。

  • ApplicationRevision では、リビジョンを指定します。 この値は整数であり、IDE で発行するたびにインクリメントされます。 これは、コマンド ラインで実行されるビルドについては自動的にインクリメントされないことに注意してください。

  • Install では、そのアプリケーションがインストールされるアプリケーションであるか、Web から実行されるアプリケーションであるかを指定します。

  • InstallUrl (示されていません) は、ユーザーによるアプリケーションのインストール元となる場所です。 指定されている場合、この値は IsWebBootstrapper プロパティが有効になっていると setup.exe ブートストラップに書き込まれます。 UpdateUrl が指定されていない場合、これもアプリケーション マニフェストに挿入されます。

  • SupportUrl (表示されていません) は、インストールされたアプリケーションの [プログラムの追加と削除] ダイアログ ボックス内にリンクが表示される場所です。

以下のプロパティは、 [発行] ページからアクセスする [アプリケーションの更新] ダイアログ ボックスで設定されます。

  • UpdateEnabled では、アプリケーションで更新プログラムを確認する必要があるかどうかを指定します。

  • UpdateMode では、Foreground 更新または Background 更新のいずれかを指定します。

  • UpdateInterval では、アプリケーションが更新プログラムを確認する必要がある頻度を指定します。

  • UpdateIntervalUnits では、UpdateInterval 値の単位が時間、日、週のどれであるかを指定します。

  • UpdateUrl (示されていません) は、アプリケーションでの更新プログラムの受信元となる場所です。 指定されている場合は、この値がアプリケーション マニフェストに挿入されます。

以下のプロパティは、 [発行] ページからアクセスする [発行オプション] ダイアログ ボックスで設定されます。

  • PublisherName では、アプリケーションのインストール時または実行時に表示されるプロンプトに示される発行元の名前を指定します。 インストールされたアプリケーションでは、[スタート] メニューのフォルダー名を指定するためにも使われます。

  • ProductName では、アプリケーションのインストール時または実行時に表示されるプロンプトに表示される製品の名前を指定します。 インストールされたアプリケーションでは、[スタート] メニューのショートカット名を指定するためにも使われます。

以下のプロパティは、 [発行] ページからアクセスする [前提条件] ダイアログ ボックスで設定されます。

  • BootstrapperEnabled では、setup.exe ブートストラップを生成するかどうかを指定します。

  • IsWebBootstrapper では、setup.exe ブートストラップが Web 上またはディスク ベース モードのどちらで動作するかを指定します。

オプション: InstallURL、SupportUrl、PublishURL、UpdateURL を使う

次の表に、ClickOnce 配置の 4 つの URL オプションを示します。

URL オプション 説明
PublishURL ClickOnce アプリケーションを Web サイトに発行するために必要です。
InstallURL 省略可能。 インストール場所が PublishURL とは異なる場合は、この URL オプションを設定します。 たとえば、PublishURL を FTP パスに設定し、InstallURL を Web URL に設定できます。
SupportURL 省略可能。 サポート サイトが PublishURL とは異なる場合は、この URL オプションを設定します。 たとえば、SupportURL を会社のカスタマー サポート Web サイトに設定できます。
UpdateURL 省略可能。 更新プログラムの場所が InstallURL とは異なる場合は、この URL オプションを設定します。 たとえば、PublishURL を FTP パスに設定し、UpdateURL を Web URL に設定できます。