チュートリアル: ClickOnce アプリケーションを複数のバージョンの .NET Framework で実行できるようにする
既定では、ClickOnce アプリケーションは、特定のバージョンおよびプロファイルの .NET Framework にインストールされて実行されるように構成されます。ただし、アプリケーションを複数のバージョンの .NET Framework にインストールして実行することもできます。このチュートリアルでは、.NET Framework 2.0 用にコンパイルされた ClickOnce アプリケーションを .NET Framework 2.0 または .NET Framework 4 にインストールして実行できるようにする方法について説明します。
注意
ClickOnce アプリケーションを複数のバージョンの .NET Framework で実行できるようにする前に、.NET Framework の各バージョンでアプリケーションを十分にテストする必要があります。
必須コンポーネント
このチュートリアルは、Visual Studio を使用して既に .NET Framework 2.0 アプリケーションを発行していることを前提としています。
デュアル プラットフォーム アプリケーションを作成するには
.NET Framework 2.0 を対象とする既存の ClickOnce アプリケーションから開始します。詳細については、「方法: 特定の .NET Framework のバージョンまたはプロファイルを対象として指定する」を参照してください。
そのアプリケーションのアプリケーション構成ファイルが publish\Application Files\<appname>_<version> ディレクトリにない場合は、そのファイルを追加します。構成ファイルの名前は、アプリケーション名に .config という拡張子が付いた名前になります (<appname>.exe.config)。詳細については、「.NET Framework の構成ファイル スキーマ」を参照してください。
構成ファイル (<appname>.exe.config) を開いて、次のコードを追加します。Wiindows は、この一覧の最初の使用可能なランタイムでアプリケーションを実行します。
<configuration> <startup> <supportedRuntime version="v4.0" /> <supportedRuntime version="v2.0.50727" /> </startup> </configuration>
publish ディレクトリ内のすべてのファイルの名前を変更して、それらのファイル名の .deploy 拡張子を一時的に削除します。この名前の変更は後で元に戻します。
ほとんどの ClickOnce 配置において、いくつかのファイルの種類の末尾に .deploy 拡張子が追加されます。
publish\Application Files\<appname>_<version> ディレクトリを開き、配置マニフェストのコピー (<appname>.application) がある場合はそのコピーを削除します (最後の手順でこのディレクトリにマスター配置マニフェストを再度コピーできます)。
次のコマンドを使用して、新しい構成ファイルまたは変更した構成ファイルの詳細を表示するようにアプリケーション マニフェスト (<appname>.exe.manifest) を更新します。これを行うには、Visual Studio コマンド プロンプトを開いて、publish\Application Files\<appname>_<version> ディレクトリに移動します。次のコマンドを実行し、新しい構成ファイルを検出してアプリケーション マニフェストに含めます。appname はアプリケーション名に置き換えます。
mage -Update appname.exe.manifest -fd .
次のコマンドを入力し、更新したアプリケーション マニフェストに署名します。\certs\cert.pfx は証明書ファイルの名前と場所に置き換えます。passwd は証明書ファイルのパスワードに置き換えます。
mage -Sign appname.exe.manifest -CertFile \certs\cert.pfx -Password passwd
手順 4. で変更したすべてのファイルの名前を再度変更して、.deploy 拡張子を元に戻します。
.config ファイルの名前を <appname>.exe.config.deploy に変更します。
publish ディレクトリで、配置マニフェストを開きます。.exe の配置の場合、配置マニフェスト ファイルは .application で終わります (<appname>.application)。ほとんどの ClickOnce 配置において、バージョンごとに配置マニフェストのコピーが保存されますが、マスター配置マニフェスト (通常は配置のルートにあります) は setup.exe 必須コンポーネント ブートストラップと共に更新する必要があります。
asmv1:assembly 要素を検索します。詳細については、「ClickOnce 配置マニフェスト」を参照してください。
asmv1:assembly 要素の子として、2 つの framework 要素を含む compatibleFrameworks 要素を追加します。次の例では、.NET Framework 2.0 プラットフォームがアプリケーションに推奨されるプラットフォームです。yourVersion は、C:\Windows\Microsoft.NET\Framework のディレクトリ名に示されているバージョンに置き換えます。
<compatibleFrameworks xmlns="urn:schemas-microsoft-com:clickonce.v2"> <framework targetVersion="2.0" supportedRuntime="2.0.50727" /> <framework targetVersion="4.0" profile="Full" supportedRuntime="4.0.yourVersion" /> </compatibleFrameworks>
配置マニフェストを保存して閉じます。
Visual Studio コマンド プロンプトで、publish ディレクトリに移動します。
次のコマンドを使用して、すべての変更を反映するように配置マニフェストを更新します。
mage -Update appname.application -AppManifest "Application Files\appname_1_0_0_3\appname.exe.manifest"
更新した配置マニフェストに署名します。
mage -Sign appname.application -CertFile \certs\cert.pfx -Password passwd
必要に応じて、マスター配置マニフェスト (publish\<appname>.application) をバージョン配置ディレクトリ (publish\Application Files\<appname>_<version>) にコピーします。
次の手順
.NET Framework 4 またはそれより前のバージョンの .NET Framework で実行されるように設定した ClickOnce アプリケーションでは、<dependentAssembly> 要素の group 属性を framework に設定して、以前の .NET Framework 内のすべての依存関係アセンブリ (.NET Framework バイナリ) を特定する必要があります。詳細については、「<dependency> 要素 (ClickOnce アプリケーション)」を参照してください。