はじめに
Windowsアプリ用のインストーラを作ってみたいと思ったので調べました。
インストーラの形式はMSIXにしました。理由は以下の通り。
- 無料で試せる
- 手軽に試せる
- 比較的新しい (参考:https://forest.watch.impress.co.jp/docs/news/1236354.html)
環境
MSIX形式のインストーラはWindows 10以外のOSでは多分作れない
> Get-WmiObject Win32_OperatingSystem
SystemDirectory : C:\Windows\system32
Organization :
BuildNumber : 18363
RegisteredUser : Windows ユーザー
SerialNumber :
Version : 10.0.18363
> dotnet --version
3.1.401
インストールするアプリを作る
WPFアプリをデフォルトの設定のまま作成する
WPFアプリを選んだ理由は特にない。コンソールアプリなど その他の形式でも問題ない
インストーラ用のプロジェクトを作る
先ほど作ったWPFアプリのソリューションに新しいプロジェクトを追加する
「Windows アプリケーション パッケージプロジェクト」を選ぶ
ターゲットバージョンの値はインストール先のOSのバージョン以上の値を選ぶ
Windows 10 SDKをインストールしていないと、選択したいバージョンが表示されない
Windows 10 SDKはVisual Studio Installerからインストールできる
インストーラを作る
インストーラプロジェクトを右クリック > 公開 > アプリパッケージの作成
「サイドローディング」をチェックした状態で「次へ」をクリック
アプリに署名をするか聞かれる。今回はテスト証明書を使用してみる
「はい、証明書を選択します」> 「作成(C)」を選択したあと「発行者共通名」と「パスワード」を適当に入力して「OK」をクリック
出力場所とインストール先のアーキテクチャを選択する (WPFアプリのターゲットプラットフォームと揃える)
※自分の環境だとx64は使えなかった。(ビルドエラーになる) 検証に使っているマシンのcpuがRyzenであることが影響しているように見えるがよくわからない...
「インストーラーの場所」に先ほどの出力場所と同じ値を入力し「作成」
ビルドが通るとパッケージの情報が表示される。インストーラの作成はこれで終わり
実際にインストールしてみる
インストーラーの場所を開くとフォルダ1つとファイル2が出力されている
index.htmlをブラウザで開く
インストールを実行する前に証明書の登録と、インストール先のマシンでサイドローディングをできるようにする
「公開者証明書」リンクをクリック
「証明書をすべて次のストアに配置する」> 「信頼されたルート証明機関」>「OK」
参考
.NET Coreに対応したInputManで次世代のアプリ配布方法を試す(MSIX編)
インストーラーを理解する
Troubleshoot installation issues with the App Installer file