MSIX パッケージ コンポーネントの生成

この記事では、コマンド ライン ツールを使用して (Visual Studio または MSIX パッケージ化ツールを使用せずに) アプリケーションをパッケージ化するための MSIX パッケージ コンポーネントを生成する方法について説明します。

アプリを手動でパッケージ化するには、パッケージ マニフェスト ファイルを作成し、パッケージ コンポーネントを追加してから、MakeAppx.exe コマンド ライン ツールを実行して MSIX パッケージを生成する必要があります。

最初にパッケージ化の準備をする

まだ確認していない場合は、アプリケーションをパッケージ化する前に理解しておく必要があることに関するセクションを確認してください。

パッケージ マニフェストを作成する

ファイルを作成し、appxmanifest.xml という名前を付けてから、この XML を追加します。

これは、パッケージに必要な要素と属性を含む基本的なテンプレートです。 これらの値は次のセクションで追加します。

<?xml version="1.0" encoding="utf-8"?>
<Package
  xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
  xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
  xmlns:uap10="http://schemas.microsoft.com/appx/manifest/uap/windows10/10"
  xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities">
  <Identity Name="" Version="" Publisher="" ProcessorArchitecture="" />
  <Properties>
    <DisplayName></DisplayName>
    <PublisherDisplayName></PublisherDisplayName>
    <Description></Description>
    <Logo></Logo>
  </Properties>
  <Resources>
    <Resource Language="" />
  </Resources>
  <Dependencies>
    <TargetDeviceFamily Name="Windows.Desktop" MinVersion="" MaxVersionTested="" />
  </Dependencies>
  <Capabilities>
    <rescap:Capability Name="runFullTrust"/>
  </Capabilities>
  <Applications>
    <Application Id="" Executable=""
      uap10:RuntimeBehavior="packagedClassicApp"
      uap10:TrustLevel="mediumIL">
      <uap:VisualElements DisplayName="" Description=""	Square150x150Logo=""
        Square44x44Logo="" BackgroundColor="" />
    </Application>
  </Applications>
</Package>

Note

パッケージを Windows 10 バージョン 2004 (10.0;ビルド 19041) 以前のシステムにインストールしている場合、uap10:RuntimeBehavioruap10:TrustLevel ではなく EntryPoint 属性を使用します。 詳細と例については、「uap10 は、Windows 10 バージョン 2004 (10.0;ビルド 19041)」を参照してください。

ファイルのパッケージ レベル要素に値を設定する

このテンプレートに、パッケージを説明する情報を設定します。

ID 情報

各属性用にプレースホルダー テキストが指定されている Identity 要素の例を次に示します。 ProcessorArchitecture 属性は、x64x86arm (つまり 32 ビット ARM)、arm64、または neutral に設定できます。

<Identity Name="MyCompany.MySuite.MyApp"
          Version="1.0.0.0"
          Publisher="CN=MyCompany, O=MyCompany, L=MyCity, S=MyState, C=MyCountry"
			    ProcessorArchitecture="x64">

Note

Microsoft Store でアプリケーション名を予約済みの場合は、パートナー センターを使用して、名前と発行元を取得できます。 アプリケーションを他のシステムにサイドロードすることを計画している場合は、独自の名前を指定することができます。ただし、選択する発行元名は、アプリへの署名に使用する証明書の名前と一致する必要があります。

プロパティ

Properties 要素には、3 つの必須の子要素があります。 要素のプレースホルダー テキストを含む Properties ノードの例を次に示します。 DisplayName は、Microsoft Store にアップロードするアプリ用に、Microsoft Store で予約するアプリケーションの名前です。

<Properties>
  <DisplayName>MyApp</DisplayName>
  <PublisherDisplayName>MyCompany</PublisherDisplayName>
  <Logo>images\icon.png</Logo>
</Properties>

リソース

Resources ノードの例を次に示します。

<Resources>
  <Resource Language="en-us" />
</Resources>

依存関係

パッケージを作成する対象のデスクトップ アプリに対して、常に Name 属性を Windows.Desktop に設定します。

<Dependencies>
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.14316.0" MaxVersionTested="10.0.15063.0" />
</Dependencies>

機能

1 つ以上の完全信頼アプリを含むパッケージの場合は、次に示すように runFullTrust の制限機能を宣言する必要があります。 完全な詳細と完全信頼アプリの定義については、「アプリ機能の宣言」で完全信頼アクセス許可レベルを検索してください。

<Capabilities>
  <rescap:Capability Name="runFullTrust"/>
</Capabilities>

アプリケーション レベル要素に値を設定する

このテンプレートに、アプリについて説明する情報を指定します。

アプリケーション要素

パッケージを作成する対象のデスクトップ アプリに対して、Application 要素の属性を次のように構成します。

<Applications>
  <Application Id="MyApp" Executable="MyApp.exe"
		 uap10:RuntimeBehavior="packagedClassicApp"
     uap10:TrustLevel="mediumIL">
   </Application>
</Applications>

Note

パッケージを Windows 10 バージョン 2004 (10.0;ビルド 19041) 以前のシステムにインストールしている場合、uap10:RuntimeBehavioruap10:TrustLevel ではなく EntryPoint 属性を使用します。 詳細と例については、「uap10 は、Windows 10 バージョン 2004 (10.0;ビルド 19041)」を参照してください。

Visual 要素

VisualElements ノードの例を次に示します。

<uap:VisualElements
	BackgroundColor="#464646"
	DisplayName="My App"
	Square150x150Logo="images\icon.png"
	Square44x44Logo="images\small_icon.png"
	Description="A useful description" />

(省略可能) ターゲット ベースのプレートなしのアセットを追加する

ターゲット ベースのアセットは、Windows タスク バー、タスク ビュー、スナップ アシスト、Alt + TAB キーを押したとき、スタート タイルの右下隅に表示されるアイコンとタイルに使用できます。 詳しくは、こちらをご覧ください。

  1. 正しい 44 x 44 の画像を取得して、それらを画像保存用のフォルダー (アセット) にコピーします。

  2. 各 44 x 44 画像のコピーを同じフォルダーに作成し、ファイル名の末尾に .targetsize-44_altform-unplated を追加します。 アイコンごとに 2 つのコピーがあり、それぞれに異なる名前が付けられます。 たとえば、プロセスの完了後には、アセットのフォルダーに MYAPP_44x44.pngMYAPP_44x44.targetsize-44_altform-unplated.png のようなファイルが含まれます。

    Note

    この例では、MYAPP_44x44.png という名前のアイコンは、MSIX パッケージの Square44x44Logo ロゴ属性で参照されるアイコンです。

  3. マニフェスト ファイルで、透明にするすべてのアイコンについて BackgroundColor を設定します。

  4. 次のサブセクションに進み、新しいパッケージ リソース インデックス ファイルを生成します。

MakePri を使用してパッケージ リソース インデックス (PRI) ファイルを生成する

前のセクションで説明したようにターゲット ベースのアセットを作成する場合や、パッケージを作成した後、アプリケーションのビジュアル アセットのいずれかを変更する場合は、新しい PRI ファイルを生成する必要があります。

SDK のインストール パスに基づき、MakePri.exe は Windows PC の以下の場所にあります。

  • x86: C:\Program Files (x86)\Windows Kits\10\bin\<ビルド番号>\x86\makepri.exe
  • x64: C:\Program Files (x86)\Windows Kits\10\bin\<ビルド番号>\x64\makepri.exe

このツールの ARM バージョンはありません。

  1. コマンド プロンプトまたは PowerShell ウィンドウを開きます。

  2. ディレクトリをパッケージのルート フォルダーに変更し、<path>\makepri.exe createconfig /cf priconfig.xml /dq en-US コマンドを実行して priconfig.xml ファイルを作成します。

  3. <path>\makepri.exe new /pr <PHYSICAL_PATH_TO_FOLDER> /cf <PHYSICAL_PATH_TO_FOLDER>\priconfig.xml コマンドを使用して resources.pri ファイルを作成します。

    たとえば、アプリケーション用のコマンドは、<path>\makepri.exe new /pr c:\MYAPP /cf c:\MYAPP\priconfig.xml のようになります。

  4. 次の手順の説明に従ってアプリケーションをパッケージ化します。

パッケージ化する前にアプリケーションをテストする

パッケージ化または署名する前に、パッケージ化されていないアプリケーションを展開してテストできます。 これを行うには、PowerShell ウィンドウから次のコマンドレットを実行します。 パッケージ ディレクトリのルートにあるアプリケーションのマニフェスト ファイルを、他のすべてのパッケージ コンポーネントと共に必ず渡すようにしてください。

Add-AppxPackage –Register AppxManifest.xml

これが完了すると、 アプリはシステム上に展開され、パッケージ化する前に、すべてが機能することを確認するためにアプリをテストできます。 アプリの .exe または .dll ファイルを更新するには、パッケージ内の既存のファイルを新しいファイルに置き換え、AppxManifest.xml のバージョン番号を繰り上げて、上記のコマンドをもう一度実行します。

コンポーネントを MSIX にパッケージ化する

次の手順では、MakeAppx.exe を使用して、アプリケーションの MSIX パッケージを生成します。 MakeAppx.exe は Windows SDK に含まれています。Visual Studio がインストールされている場合は、Visual Studio の開発者コマンド プロンプトから簡単にアクセスできます。

MakeAppx.exe ツールで MSIX パッケージまたはバンドルを作成する方法に関するページを参照してください。

Note

パッケージ化したアプリケーションは、常に対話ユーザーとして実行されます。パッケージ化したアプリケーションをインストールするドライブは、NTFS 形式にフォーマットされている必要があります。