ソース コードから MSIX Core を使用して MSIX パッケージを作成する

MSIX Core は、古いバージョンの Windows を選択するために、MSIX を展開します。 MSIX Core インストーラーを利用して、ClickOnce によりアプリケーションを作成できます。 これによりユーザーは、setup.exe をダウンロードし、MSIX Core インストーラーを使用して MSIX アプリをインストールすることができます。

Web サーバーでアプリをホストする

MSIX Core インストーラーを使用してアプリをブートストラップするには、Web サーバーでアプリ パッケージをホストする必要があります。 このセクションでは、Azureインターネット インフォメーション サービス (IIS)、およびアマゾン ウェブ サービス (AWS) で Web アプリを設定する方法について説明します。

Azure

このオプションを使用するには、Azure サブスクリプションが必要です。 この取得については、Azure アカウントのページを参照してください。

Azure Web アプリの作成

作成を開始するには、Azure portal ページに移動して、以下の手順に従います。

  1. [リソースの作成] をクリックします。
  2. [Web] をクリックし、[Web アプリ] を選択します。
  3. [インスタンスの詳細] で、一意のアプリ名を作成し、そのアプリに適切な設定を選択します。 たとえば、[Code or Docker Container](コードまたは Docker コンテナー)[Runtime Stack](ランタイム スタック) のいずれかを選択する必要があります。 選択しない場合、他のすべてはデフォルトのままになります。
  4. [作成] をクリックし、ウィザードを終了します。

アプリ パッケージと Web ページをホストする

  1. Web アプリを作成したら、アプリを選択します。
  2. [開発ツール] で、[App Service Editor] をクリックします。
  3. エディターには、既定の hostingstart.html ファイルがあります。 エクスプローラーの空白領域を右クリックし、[ファイルのアップロード] を選択してアプリ パッケージのアップロードを開始します。
  4. エクスプローラー パネルの空白領域を再度右クリックし、[新しいファイル] を選択して新しいファイルを作成します。 既定の HTML ページに付ける名前をファイル名として指定します。

アプリ パッケージの MIME タイプ用の Web アプリを構成する

Web アプリに Web.config という名前の新しいファイルを追加します。 Web.config ファイルを開いて、次の XML をファイルに追加します。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <!--This is to allow the web server to serve resources with the appropriate file extensions-->
    <staticContent>
      <mimeMap fileExtension=".appx" mimeType="application/appx" />
      <mimeMap fileExtension=".msix" mimeType="application/msix" />
    </staticContent>
  </system.webServer>
</configuration>

インターネット インフォメーション サービス (IIS)

IIS は Windows のオプション機能です。 IIS のインストール手順

  1. [スタート] をクリックし、「Windows の機能の有効化または無効化」を検索します。
  2. [インターネット インフォメーション サービス] を選択します。
  3. ASP.NET 4.5 以降もインストールします。 [Windows の機能] ダイアログで、[インターネット インフォメーション サービス] ->[World Wide Web サービス] ->[アプリケーション開発機能] の順に展開し、ASP.NET 4.5 またはそれ以降のバージョンの ASP.NET を選択します。
  4. [OK] をクリックしてインストールを開始します。

Visual Studio 2017 (またはこれ以降のバージョン) と Web 開発ツールが必要です。 Visual Studio のバージョン 2017 以降が既にインストールされている場合は、ASP.NET と Web 開発ワークロードがインストールされていることを確認します。 Visual Studio がインストールされていない場合は、ここから Visual Studio をインストールします。

Web アプリを構築する

管理者として Visual Studio を起動し、空のプロジェクト テンプレートを使用して新しい Visual C# Web アプリケーション プロジェクトを作成します。

Web アプリで IIS を構成する

  1. ソリューション エクスプローラーで、ルート プロジェクトを右クリックして、[プロパティ] を選択します。
  2. [プロパティ] で、[Web] タブを選択します。
  3. [サーバー] セクションで、ドロップダウン メニューから [ローカル IIS] を選択し、[仮想ディレクトリの作成] をクリックします。

Web アプリケーションにアプリ パッケージを追加する

Web アプリケーションに配布するアプリ パッケージを追加します。

  1. ソリューション エクスプローラーで、プロジェクト ノードを右クリックします。
  2. [追加] ->[新しいフォルダー] の順に選択し、フォルダー パッケージに名前を付けます。
  3. フォルダーにアプリ パッケージを追加するために、パッケージ フォルダーを右クリックし、[追加] ->[既存項目] の順に選択します。 アプリ パッケージの場所を参照します。

Web ページを作成する

必要に応じて、HTML ページまたは他の Web アプリを作成します。 新しい setup.exe のリンクを追加します。

アプリ パッケージの MIME タイプ用の Web アプリを構成する

ソリューション エクスプローラーから Web.config ファイルを開き、次の XML を <構成> 要素内に追加します。

<system.webServer>
  <!--This is to allow the web server to serve resources with the appropriate file extensions-->
  <staticContent>
    <mimeMap fileExtension=".appx" mimeType="application/appx" />
    <mimeMap fileExtension=".msix" mimeType="application/msix" />
  </staticContent>
</system.webServer>

アマゾン ウェブ サービス (AWS)

このオプションを使用するには、AWS メンバーシップが必要です。 詳細については、「AWS アカウントの詳細」を参照してください。

Amazon S3 バケットを作成し、MSIX パッケージと Web ページをアップロードする

Amazon Simple Storage Service (S3) は、データを収集、格納、分析するための AWS サービスです。 S3 バケットは、配布用の Windows 10 アプリ パッケージと Web ページをホストするのに便利です。

  1. AWS にログインします。 [サービス]S3 を検索します。
  2. [Create bucket](バケットの作成) を選択し、Web サイトのバケット名を入力します。 ダイアログの指示に従って、プロパティとアクセス許可を設定します。 Web サイトから Windows 10 アプリを確実に配布するには、バケットの読み取りおよび書き込みアクセス許可を有効にし、[Grant public read access to this bucket](このバケットへのパブリック読み取りアクセスを許可する) を選択します。 [Create bucket](バケットの作成) をクリックし、この作業を終了します。
  3. 完了したら、MSIX パッケージと Web ページを S3 バケットにアップロードします。

アプリ パッケージの MIME タイプ用の Web アプリを構成する

S3 ブラウザーなどの Web サービス インターフェイスを使用して、新しい既定の HTTP ヘッダーを追加します。

  1. [ツール] に移動し、[Default HTTP Headers](既定の HTTP ヘッダー) を選択します。
  2. [Default HTTP Headers](既定の HTTP ヘッダー) ダイアログで、[追加] をクリックします。
  3. [Add New Default HTTP Headers](新しい既定の HTTP ヘッダーの追加) ダイアログで、バケット名、ファイル名、ヘッダー名、ヘッダー値を指定し、[Add new header](新しいヘッダーの追加) をクリックします。
    • バケット名: msix-packages
    • ファイル名: *.msix
    • ヘッダー名: Content-Type
    • ヘッダー値: application/msix

注意

 AWS では、いくつかの厳格なガイドラインに従う必要があります。 たとえば、バケット名は一意である必要があります。したがって、上記の例を使用している場合は、バケット名を変更する必要があります。

MSIX Core インストーラーを使用して ClickOnce アプリケーションをビルドする

アプリケーションのアプリケーション ClickOnce setup.exe を探します。 これは、Git プロジェクトの複製を参照しており、Visual Studio プロジェクトを使用してビルドおよび公開します。

URL コマンドを実行して新しい setup.exe を作成する

必ず以下の手順に従って、Visual Studio の MSIX Core ソリューションを複製、ビルド、公開します。 参考までに、GitHub プロジェクトはこちらで確認できます

setup.exe ファイルを公開したディレクトリに移動し、次のコマンドを実行します。

.\setup.exe -url=<location of your msix in the webservice>

次に例を示します。

.\setup.exe -url="https://appinstallerdemo.azurewebsites.net/MSIXCore/msixmgrWrapper.application?https://appinstallerdemo.azurewebsites.net/MSIXCore/notepadplus.msix#"

アプリケーションに署名する

前のステップで新しい setup.exe を作成したため、アプリに再度署名して、アプリケーションの信頼された発行者であることを確認し、アプリケーションの整合性を確立する必要があります。 SignTool を使用して、証明書を指定できます。

アプリケーションをユーザーに配布する

これで、Web サイトのリンクまたはダウンロード ボタンにより、新しい setup.exe が指定されるようになりました。 MSIX Core は、Windows 10 バージョン 1703 以前のユーザーを対象としています。 アプリ インストーラーは、Windows の 1709 以降のバージョンで MSIX パッケージをインストールするのに最適なプロセスです。 アプリ インストーラーは、コンシューマー側のディスク領域を最適化し、HTTP の場所からアプリを直接インストールできます。 MSIX Core は、コンシューマーが Windows の 1709 以降のバージョンを使用しているかどうかを検出し、そのコンシューマーをアプリ インストーラーにリダイレクトします。

Microsoft Edge の場合は、getHostEnvironmentValue() メソッドを呼び出すことで、戻り値の os-build フィールドによりユーザーの OS バージョンが示されます。 そこから、インストール プロセスに指示して、MSIX Core (Windows 10 バージョン 1703 以前の場合) またはアプリ インストーラー (Windows 10 バージョン 1709 以降の場合) を使用することができます。

ユーザー側の表示と操作

ユーザーは、開発者の Web ページから setup.exe をダウンロードして実行します。

  • ユーザーが setup.exe を実行したときに MSIX Core インストーラーがまだインストールされていない場合は、ClickOnce プロンプトが表示されます。ユーザーは、[インストール] をクリックして MSIX Core インストーラーをインストールします。 インストーラーが自動的に起動し、開発者のクエリ文字列で指定された MSIX パッケージのインストール画面が表示されます。これにより、ユーザーはアプリをインストールできます。
  • ユーザーが setup.exe を実行するときに MSIX Core インストーラーが既にインストールされている場合は、MSIX Core インストーラーが自動的に起動し、クエリ文字列で指定された MSIX パッケージのインストール画面が表示されます。これにより、ユーザーはアプリをインストールできます。