rksoftware

Visual Studio とか C# とかが好きです

Xamarin.Forms.WPF アプリを ClickOnce でインストールする

以前の記事で Xamarin.Forms.WPF でデスクトップアプリを作成しました。

このデスクトップアプリを配布するためにインストーラーを作成してみましょう。
今回は、Visual Studio 標準で作成でき、エンタープライズ分野で使われることもある ClickOnce のインストーラーを作成します。

■ Xamarin.Forms.WPF は普通の WPF アプリ

Xamarin.Forms.WPF は出来上がるアプリの形式としては、普通の WPF アプリです。
つまり、ビルドして生成されるバイナリは .exe ファイルです。
ということは普通のインストーラーを作成し、インストールすることができるということです。アプリケーションの配布についてはいろいろな戦略があり、インストーラーがすべてではありません。しかしインストーラーが作れないなどとなると制約となってしまいます。

■ ClickOnce の発行

  • まずは通常の手順で Xamarin.Forms.WPF アプリを作成します。

  • プロジェクトのプロパティを開きます。
  • [発行] タブを開きます。
  • [今すぐ発行] ボタンをクリックします。

これだけでインストーラーが出来上がります。

■ インストール

そつなくインストーラーができたので早速インストールしてみます。

システムの更新が必要 このアプリケーションをインストールまたは実行できません。このアプリケーションでは、まずグローバル アセンブリ キャッシュ (GAC) にアセンブリ netfx.force.conflicts バージョン 0.0.0.0 を インストールする必要があります。

というエラーが発生しインストールに失敗します。

Bing ってみると、ASP.NET の情報で「obj や bin を消してリビルド」が何件か見られます。しかし試してみても状況に変化はありませんでした。

■ グローバル アセンブリ キャッシュ への登録

素直に グローバル アセンブリ キャッシュ へ登録してみます。

を参考に作業します。

コマンド

gacutil -i netfx.force.conflicts.dll

次のメッセージが表示されれば成功です。

アセンブリが正しくキャッシュに追加されました

・参考: Assembly の場所
私の環境では、netfx.force.conflicts.dll が次のフォルダにいました。(一番バージョンの低いものを選択しました)

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib

■ もう一度インストール

再度インストーラーを実行すると、今度はインストールに成功しました。

とても地味なことですが、インストーラーの作成が行えました。
インストーラーも使えるということで、Xamarin.Forms.WPF が普通にデスクトップアプリ開発に使える期待がまた一つ高まりました。