インストーラーを理解する

この記事では、既存のインストーラーを MSIX に変換する前に理解しておく必要がある事項の一覧を示します。 パッケージ化プロセスに向けてアプリケーションを準備するためには多くの作業を行う必要はありませんが、以下の項目のいずれかがアプリケーションに当てはまる場合は、パッケージ化の前に対処する必要があります。

  • アプリケーションにサービスがあるサービスがあるアプリケーションの変換はサポートされていますが、サービスの変換に関する制限事項に留意することが重要です。 変換後、サービスを含む MSIX をインストールするには、管理者への昇格が必要です。 サービスがあるアプリケーションは、MSIX Packaging Tool のバージョン 1.2019.1220.0 以降で変換できます。また、サービスがある MSIX は、Windows 10 の 2020 年春のリリース以降でデプロイできます。

  • インストーラーが再起動を必要とする。 インストーラーが再起動を必要とする場合、その対応は MSIX Packaging Tool のバージョン 1.2019.701.0 以降でサポートされています。 インストーラーが、再起動が必要であることを示す特殊な終了コードを返す場合は、そのコードを MSIX Packaging Tool の設定の再起動終了コード セクションに追加する必要があります。

  • .NET アプリケーションで 4.6.2 より前のバージョンの .NET Framework が必要。 .NET アプリケーションをパッケージ化する場合は、アプリケーションのターゲットを .NET Framework 4.6.2 以降にすることをお勧めします。 パッケージ化されたデスクトップ アプリケーションをインストールして実行する機能は、Windows 10 バージョン 1607 (Anniversary Update とも呼ばれます) で初めて導入されました。この OS バージョンには .NET Framework 4.6.2 が既定で含まれています。 それ以降のバージョンの OS には、新しいバージョンの .NET Framework が含まれています。 新しいバージョンの Windows 10 に含まれている .NET のバージョンの完全な一覧については、こちらの記事をご覧ください。

    パッケージ化されたデスクトップ アプリケーションで 4.6.2 より前のバージョンの .NET Framework をターゲットにしても、ほとんどの場合は機能するはずです。 ただし、4.6.2 よりも前のバージョンをターゲットにする場合は、パッケージ化されたデスクトップ アプリケーションをユーザーに配布する前に、十分にテストする必要があります。

    • 4.0 - 4.6.1: これらのバージョンの .NET Framework をターゲットとするアプリケーションは、4.6.2 以降で問題なく実行できることが予想されます。 そのため、これらのアプリケーションは、Windows 10 バージョン 1607 以降とその OS に付属するバージョンの .NET Framework に変更を加えることなく、インストールして実行できるはずです。

    • 2.0 および 3.5: 私たちのテストでは、これらのバージョンの .NET Framework をターゲットとするパッケージ化されたデスクトップ アプリケーションは通常動作します。ただし、一部のシナリオではパフォーマンス上の問題が発生する可能性があります。 これらのパッケージ化されたアプリケーションをインストールして実行するには、.NET Framework 3.5 の機能をターゲット コンピューターにインストールする必要があります (この機能には、.NET Framework 2.0 と 3.0 も含まれます)。 また、これらのアプリケーションをパッケージ化した後、十分にテストする必要もあります。

  • アプリケーションがドライバーを必要とする。 MSIX では、ドライバーはサポートされていません。

  • アプリケーションが、別のアプリとデータを共有するために AppData フォルダーまたはレジストリに書き込みを行う。 変換後、AppData はローカル アプリ データ ストアにリダイレクトされます。このストアは、各アプリのプライベート ストアです。

    アプリケーションが HKEY_LOCAL_MACHINE レジストリ ハイブに書き込んだすべてのエントリが、分離されたバイナリ ファイルにリダイレクトされ、アプリケーションが HKEY_CURRENT_USER レジストリ ハイブに書き込んだすべてのエントリが、ユーザーごと、アプリごとのプライベートな場所に配置されます。 ファイルとレジストリのリダイレクトの詳細については、「デスクトップ ブリッジの内側」をご覧ください。

  • アプリケーションが、アプリのインストール ディレクトリに書き込みを行う。 たとえば、exe と同じディレクトリに置いたログ ファイルにアプリケーションが書き込む場合などです。 フォルダーが保護されているため、これはサポートされていません。 ローカル アプリ データ ストアなどの別の場所に書き込むことをお勧めします。 1809 以降では、これができる機能が追加されています。

  • アプリケーションで現在の作業ディレクトリを使う。 パッケージ化されたデスクトップ アプリケーションでは、実行時に、デスクトップの .LNK ショートカットで以前に指定していたのと同じ作業ディレクトリが取得されません。 アプリケーションを正しく動作させるために現在のディレクトリを取得することが重要な場合は、実行時に CWD を変更する必要があります。

  • アプリケーションが Windows サイドバイサイド フォルダーからアセンブリのインストールや読み込みを行う。 たとえば、アプリケーションが C ランタイム ライブラリ VC8 または VC9 を使用しており、それらを Windows サイドバイサイド フォルダーから動的にリンクしている場合があります。つまり、コードが C:\Windows\WinSxS などの共有フォルダーから共通の DLL ファイルを使用していることがあります。 これはサポートされていません。 再頒布可能なライブラリ ファイルをコードに直接リンクして、静的にリンクする必要があります。

その他の考慮事項

  • 適切なアーキテクチャでインストーラーを再パッケージ化する。 インストーラーが x86 マシンにインストールされることを想定している場合は、 x86 マシン上でインストーラーを再パッケージ化してください。 これには、x64 マシン用のインストーラーが該当します。

    Note

    アプリでインストール ディレクトリに書き込んだり、現在の作業ディレクトリを使用したりする必要がある場合は、パッケージに対してパッケージ サポート フレームワークを使用したランタイム修正の追加を検討することもできます。 詳細については、こちらの記事を参照してください。