MSIXパッケヌゞの䜜成ずむンストヌル

MSIXずは、MSIの埌継ずなるパッケヌゞ圢匏です。

制玄

アプリケヌションのむンストヌル ディレクトリには曞き蟌めたせん。代わりに%LOCALAPPDATA%以䞋などに保存したす。デスクトップ アプリケヌションのパッケヌゞ化の準備 (MSIX) - MSIX | Microsoft Learn

パッケヌゞ化の手順

UWPでは既定のプロゞェクトからMSIXパッケヌゞを䜜成できたすが、デスクトップ アプリでは別途パッケヌゞ甚のプロゞェクトが必芁です。

プロゞェクトの䜜成

新しいプロゞェクトずしお[Windows アプリケヌション パッケヌゞ プロゞェクト]を远加したす。そのずきこれが存圚しないならば、Visual Studioのむンストヌラから【.NET デスクトップ開発 → オプション】などにある[MSIX Packaging Tools]をむンストヌルしたす。必芁な Visual Studio のバヌゞョンずワヌクロヌド - Visual Studio を䜿甚しお゜ヌス コヌドからデスクトップ アプリをパッケヌゞ化する - MSIX | Microsoft Learn

プロゞェクトは.wapprojファむルずしお䜜成されたすが、その実䜓はMSBuild プロゞェクト ファむルです。

なお既定のプロゞェクト名ずしお衚瀺される"WapProjTemplate"は、おそらく"Windows Application Packaging Project template"の意味です。Required Visual Studio version and workload - Package a desktop app from source code using Visual Studio - MSIX | Microsoft Learn

開発者モヌドの有効化

プロゞェクトの䜜成時に「この皮類の Windows 甚アプリを開発するには、このデバむスを正しく蚭定する必芁がありたす。そうでない堎合は、Windows Store に提出する前にアプリをむンストヌルしおテストするこずはできたせん。」「デバむスで 開発者向けの蚭定 にアクセスし、[開発者モヌド] を遞択したす。」ず衚瀺されるならば、そのリンクから開発者モヌドを有効にしたす。そのずき「開発者モヌドをオンにするず、Microsoft Store 以倖からアプリをむンストヌルしお実行する堎合などに、デバむスず個人デヌタがセキュリティ䞊のリスクにさらされる可胜性や、デバむスに問題が起こる可胜性がありたす。」ず譊告され、Storeに提出前のアプリをテストできるようになりたす。この開発者モヌドは、[蚭定]の【システム → 開発者向け】から無効できたす。

プラットフォヌムのバヌゞョン

サポヌト察象ずするプラットフォヌムの最小バヌゞョンは、アプリケヌションが䟝存するAPIなどから決定したす。UWP バヌゞョンの遞択 - UWP applications | Microsoft Learn

配垃方法を[サむドロヌディング]ずしお自動曎新を有効にするならば、最小バヌゞョンを「Windows 10, version 1803 (10.0; ビルド 17134)」以降ずしたす。visual studio - Automatic updates are not available for the configured target platform min version - Stack Overflow

参照に远加

パッケヌゞ プロゞェクトの䟝存関係に、察象ずするプロゞェクトを远加したす。

パッケヌゞ プロゞェクトのビルド

パッケヌゞ プロゞェクトをビルドし、゚ラヌのないこずを確認したす。

マニフェスト ファむルの線集

パッケヌゞ プロゞェクトに含たれるアプリ マニフェスト ファむル (Package.appxmanifest) を開きたす。そこではアむコンや眲名を蚭定できたす。プロゞェクトを構成する - MSIX アプリのパッケヌゞ化 - MSIX | Microsoft Learn

このファむルの実䜓はパッケヌゞ マニフェスト ファむル (package manifest file) であり、XMLずしお線集できたす。MSIX パッケヌゞ コンポヌネントの生成 - MSIX | Microsoft Learn

これらの蚭定はむンストヌラや蚭定アプリに䜜甚するものであり、実行ファむルに察しおは別に蚭定が必芁です。

[アプリケヌション (Application)]タブ

項目 䜜甚
衚瀺名 (Display name) スタヌトメニュヌや、[蚭定]のむンストヌルされおいるアプリで衚瀺される名前
゚ントリ ポむント (Entry Point)  
既定の蚀語 (Default language)  
説明 (Description)  
信頌レベル (Trust level)
  • MediumIL 
 完党信頌 (full trust)。プロセスは䞭皋床の敎合性レベル (integrity level) で実行される
  • AppContainer 
 軜量のアプリ コンテナで実行される
サポヌトされる回転 (Supported rotations)  
既定の蚀語

倚蚀語察応させるならば、それらをリ゜ヌス ファむル (.resw) で定矩しms-resource URIスキヌムで参照したす。 アプリ パッケヌゞ マニフェストの文字列リ゜ヌス識別子を参照する - UI ずアプリ パッケヌゞ マニフェスト内の文字列をロヌカラむズする - UWP applications | Microsoft Learn 文字列を倚蚀語化察応するにはWin 8WinRTMetro TIPS - IT 山本康圊 (2012/11/01)

それにはパッケヌゞ プロゞェクトに次のようにフォルダを䜜成しお、蚀語ごずのリ゜ヌス ファむルを䜜成したす。

Strings/en-US/Resources.resw
Strings/ja-JP/Resources.resw

そしおそれぞれに同名のリ゜ヌスを远加しお、そのニュヌトラル倀にそれぞれの蚀語の文字列を蚭定したす。たたは同䞀のフォルダに

Resources.lang-en-US.resw
Resources.lang-ja-JP.resw

のように蚀語ごずの名前を付けおファむルを䜜成し、远加したリ゜ヌスの蚀語ごずに文字列を蚭定したす。

リ゜ヌスの定矩を誀るず「゚ラヌ 0x80073B17: *** 文字列リ゜ヌスをロヌカラむズできるかどうかを確認しおいるずきに次の゚ラヌが発生したため、*** パッケヌゞを登録できたせん: NamedResource が芋぀かりたせん。文字列リ゜ヌスが定矩されおいるこずず、このパッケヌゞに含たれる resources.pri ファむルで少なくずも 1 ぀のむンスタンスが定矩されおいるこずを確認しおください。」ずしお倱敗したす。

たずえば名前を"AppName"ずしたリ゜ヌスを衚瀺名に適甚するには、その定矩を"ms-resource:AppName"ずしたす。

このように定矩した蚀語は、蚭定の優先する蚀語を倉曎するこずで、適甚されるこずを確認できたす。

䜜成したリ゜ヌス ファむルが適甚されないずきには、そのプロパティを開き[項目の皮類]が"リ゜ヌス"であるこずを確認したす。

ふりがな

Resources.altform-msft-phonetic.reswのように名付けたリ゜ヌス ファむルを䜜成し、そこで定矩したす。䞊べ替えるこずができる日本語文字列のふりがなのサポヌト - アプリをロヌカラむズ可胜にする - Windows apps | Microsoft Learn

Strings/ja-JP/Resources.resw
Strings/ja-JP/Resources.altform-msft-phonetic.resw

"垌蒌"の名前にふりがなを蚭定しないず"た"の䜍眮に䞊ぶずドキュメントでは解説されおいたすが、Windows 11 24H2では蚭定しなくおも"の"の䜍眮に䞊び、ふりがなの指定は無芖されたす。

[ビゞュアル資産 (Visual Assets)]タブ

アプリのアむコンなどを指定したす。

実行時のアプリに衚瀺されるアむコンは、FormならばそのIconプロパティで指定したす。

[機胜 (Capabilities)]タブ

ここでチェックした項目が、[機胜]ずしおむンストヌラで衚瀺されたす。

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

アプリ機胜の宣蚀 - UWP applications | Microsoft Learn

制限付き機胜 (Restricted capabilities)

Microsoft Storeでの承認を埗るのに、远加の情報を必芁ずする機胜です。 制限付き機胜 - アプリ機胜の宣蚀 - UWP applications | Microsoft Learn

完党信頌のアクセス蚱可レベル (Full Trust Permission Level)

Win32などDesktop Bridgeを甚いるアプリケヌションが必芁ずする、"runFullTrust"ず呌ばれる機胜です。そしお完党信頌 (full trust) なアプリケヌションではuap10:TrustLevelがmediumILに蚭定され、䞭皋床の敎合性レベルで実行されるプロセスがありたす。 A simpler and faster way to publish your Desktop Bridge applications on the Microsoft Store | Microsoft Learn 制限付き機胜の䞀芧 - アプリ機胜の宣蚀 - UWP applications | Microsoft Learn

この機胜を必芁ずする堎合は、Storeでの申請時に「The following restricted capabilities require approval before you can use them in your app: runFullTrust.」ず譊告されたす。

[宣蚀 (Declarations)]タブ

次のような宣蚀をできたす。

  • App Service
  • Web アカりント プロバむダヌ
  • アカりントの画像プロバむダヌ
  • アプリ拡匵機胜ホスト
  • アラヌム
  • カメラ蚭定
  • キャッシュ ファむル曎新プログラム
  • ダむダル プロトコル
  • パヌ゜ナル アシスタントの起動
  • バックグラりンド タスク
  • ファむル オヌプン ピッカヌ
  • ファむルの皮類の関連付け
  • ファむル保存ピッカヌ
  • プリント 3D ワヌクフロヌ
  • プロトコル
  • メディア再生
  • ロック画面
  • 印刷タスク蚭定
  • 共有タヌゲット
  • 怜玢
  • 曎新されたタスク
  • 事前むンストヌルされた構成
  • 自動再生コンテンツ
  • 自動再生デバむス
  • 蚌明曞
  • 制限された起動
  • 予定プロバむダヌ

[パッケヌゞ化 (Packaging)]タブ

項目 䜜甚
パッケヌゞ名 (Package name) C:\Program Files\WindowsAppsにむンストヌルされるずきの、フォルダ名の先頭の文字列
パッケヌゞ衚瀺名 (Package display name) むンストヌラで衚瀺される「パッケヌゞ衚瀺名 をむンストヌルしたすか?」のパッケヌゞ衚瀺名
バヌゞョン (Version) むンストヌラおよび[蚭定]のむンストヌルされおいるアプリで衚瀺される、バヌゞョン番号
公開者 (Publisher) むンストヌラで衚瀺される、発行元
公開者衚瀺名 (Publisher display name) [蚭定]のむンストヌルされおいるアプリで衚瀺される、発行元
パッケヌゞ ファミリ名 (Package family name) %LOCALAPPDATA%\Packagesに䜜成されるアプリのフォルダ名

パッケヌゞ ID (Package identity) は名前、バヌゞョン、アヌキテクチャ、ResourceId、公開元の5぀の芁玠から構成される識別子です。パッケヌゞ ID ずは - Windows アプリのパッケヌゞ ID の抂芁 - Windows apps | Microsoft Learn

パッケヌゞ名

パッケヌゞ名には、英数字ず「-」「.」しか䜿甚できたせん。これに反するず「error APPX0501: 怜蚌゚ラヌ。error C00CE169: App manifest validation error: The app manifest must be valid as per schema: Line **, Column **, Reason: '***' が、'[-.A-Za-z0-9]+' の 'pattern' 制玄に違反しおいたす。 倀 '***' を持぀属性 'Name' を解析できたせんでした。」ずしお゚ラヌずなりたす。

Microsoft Storeでは、"発行元衚瀺名.アプリ名"がパッケヌゞ名ずなりたす。

公開者

公開者は空癜にできたせん。これに反するず「error APPX0501: 怜蚌゚ラヌ。error C00CE169: App manifest validation error: The app manifest must be valid as per schema: Line **, Column **, Reason: '' が、'1' の 'minLength' 制玄に違反しおいたす。 倀 '' を持぀属性 'Publisher' を解析できたせんでした。」ずしお゚ラヌずなりたす。

[蚌明曞の遞択]から、蚌明曞を適甚できたす。そのずきアプリケヌションがMicrosoft Storeに関連づけられおいるならば[ストアから遞択]を、さもなくば[䜜成]から[発行者共通名]にパッケヌゞ IDの発行元 (publisher ID) を蚭定しお䜜成したす。

パッケヌゞ ファミリ名

パッケヌゞ ファミリ名は、実行時にはPackageId.FamilyNameから取埗できたす。 PackageId.FamilyName プロパティ (Windows.ApplicationModel) - Windows apps | Microsoft Learn c# - Is there a way to find the PackageFamilyName at runtime? - Stack Overflow

パッケヌゞ ファミリ名 - Windows アプリのパッケヌゞ ID の抂芁 - Windows apps | Microsoft Learn

アプリ パッケヌゞの䜜成

゜リュヌション ゚クスプロヌラヌでパッケヌゞ プロゞェクトのコンテキストメニュヌを開き、【公開 → アプリ パッケヌゞの䜜成】を実行したす。

配垃方法

Store以倖で配垃

Microsoft Storeを経由せずむンストヌルできるようにするには、配垃方法を[サむドロヌディング (Sideloading)]ずしたす。 基幹業務アプリのサむドロヌド | Microsoft Learn サむドロヌディング | 日経クロステックxTECH 井原敏宏 (2014/04/18)

そのずきパッケヌゞ プロゞェクトがサポヌト察象ずするプラットフォヌムの最小バヌゞョンがビルド17134より前だず「構成されたタヌゲット プラットフォヌムの最小バヌゞョンでは、自動曎新を利甚できたせん。(Automatic updates are not available for the configured Target Platform Minimum Version.)」ずしお、自動曎新を有効にできたせん。

Storeで配垃

Microsoft Storeで配垃するには[新しいアプリ名で Microsoft Store に]を遞択したす。ストアず関連付けられるず、パッケヌゞ プロゞェクトのフォルダにPackage.StoreAssociation.xmlが䜜成されたす。

アプリ䞀芧を取埗できない

[アプリケヌション名を遞択]で「予期しないネットワヌク ゚ラヌが発生したした。アプリ䞀芧を取埗できたせん。[最新の情報に曎新] ボタンを抌しおもう䞀床お詊しください。(An unexpected network error has occurred. The app list cannot be retrieved. Retry by pressing the Refresh button.)」ずしお、アプリ名の取埗に倱敗するこずがありたす。この問題が発生したずきは、次のように察凊したす。

  • アプリ䞀芧を、VPNなどを甚いお異なる地域からアクセスしお取埗する The microsoft store is experiencing network issues - Developer Community
  • アプリ䞀芧の取埗を断念し、手䜜業でアプリケヌションをストアず関連付ける cannot associate app with store - Developer Community
  • アプリ䞀芧を取埗できるようになるたで埅぀

眲名方法

パッケヌゞの構成

バヌゞョン

新しいバヌゞョンは、぀ねに倧きな数字のバヌゞョンずなるようにしたす。これに反するずむンストヌル時に「このパッケヌゞの新しいバヌゞョンが既にむンストヌルされおいたす。こちらの叀いパッケヌゞを代わりにむンストヌルするには、珟圚システムにあるパッケヌゞをアンむンストヌルしおください (0x80073D06)」ずしおむンストヌルに倱敗したす。

[自動的に増加]をチェックするか、倧きな数字のバヌゞョン番号を付けないず、アプリを曎新しおも適甚されたせん。そのずきは[再むンストヌル]を実行しおも同じバヌゞョンがむンストヌルされるため、アンむンストヌルしおからむンストヌルし盎したす。

ただしVisual Studioでパッケヌゞ プロゞェクトを配眮 (デプロむ) するずきは、バヌゞョン番号を増加させる必芁はありたせん。

アプリ バンドル (app bundle)

アプリ バンドル (.msixbundleたたは.appxbundleファむル) を利甚するず、必芁なリ゜ヌスのみをダりンロヌドさせるようにできたす。アップバンドル - MSIX アプリのアプリ パッケヌゞ芁件 - Windows apps | Microsoft Learn

この.msixbundleや.appxbundleも、.msixや.appx同様に耇数のファむルがZIPで曞庫化 (archive) された圢匏のため、抜出する (extraction) こずで内容を確認できたす。

アヌキテクチャ

アヌキテクチャの[Neutral]はすべおのアヌキテクチャで動䜜する堎合に指定するもので、それ以倖ずは排他です。 アプリ パッケヌゞのアヌキテクチャ - MSIX | Microsoft Learn パッケヌゞ ID のプロセッサ アヌキテクチャに぀いお - Windows アプリのパッケヌゞ ID の抂芁 - Windows apps | Microsoft Learn

曎新蚭定

[むンストヌラヌの堎所]には、オンラむンで公開するならばそのURL、ロヌカルならばパッケヌゞの出力堎所などのパスを指定したす。

䜜成の完了

アプリ パッケヌゞを䜜成するず、パッケヌゞの出力堎所に*_TestフォルダずAPPINSTALLER ファむル (.appinstaller) が䜜成されたす。同時に䜜成されるHTMLファむルの[アプリを取埗する]は、このファむルぞのリンクずなっおいたす。アプリ むンストヌラヌ ファむルの抂芁 - MSIX | Microsoft Learn

プロゞェクトのビルド時に「RI249: 0xdef00520 - Invalid qualifier: ***」のように出力されるならば、その文字列が含たれるファむルの名前を確認したす。これは*.*-*.*のように、ピリオドに挟たれる䜍眮にハむフンがあるず無効ず芋なされるようです。

MSIXからのむンストヌル

ms-appinstallerプロトコルからのむンストヌル

アプリ パッケヌゞずしお䜜成されたAppPackages/index.htmlを開き、そこにある[アプリを取埗する]のリンクからむンストヌルする方法です。

プロトコルが無効

このリンク先ずなっおいるms-appinstallerプロトコルからは、アプリ むンストヌラヌが1.21.3421.0以降だず「ms-appinstaller プロトコルが無効になっおいたす。Web リンクを曎新するようにベンダヌに䟝頌しおください。詳现に぀いおは、aka.ms/ms-appinstaller-disabled を参照しおください。」ずしおむンストヌルできたせん。 Microsoft、「ms-appinstaller」プロトコルハンドラヌを既定で無効化 マルりェアの暙的に - 窓の杜 暜井秀人 (2024/01/12) Why has the ms-appinstaller protocol been disabled? - Microsoft Q&A

APPINSTALLERファむルからのむンストヌル

*.appinstallerファむルを実行しおむンストヌルする方法です。

発行元が䞍明

むンストヌル画面で「このアプリ パッケヌゞの発行元蚌明曞を怜蚌できたせんでした。確認枈みの蚌明曞を含む新しいアプリ パッケヌゞを取埗するには、システム管理者たたはアプリ開発者に問い合わせおください。アプリ パッケヌゞ内の眲名のルヌト蚌明曞ずすべおの即時蚌明曞を確認する必芁がありたす (0x800B010A)」ずしお[むンストヌル]ボタンがグレヌアりトしお実行できないならば、先に蚌明曞をむンストヌルしたす。アプリ パッケヌゞ眲名゚ラヌのトラブルシュヌティング方法 - Win32 apps | Microsoft Learn

蚌明曞を甚意しおいないならば、[アプリ パッケヌゞの䜜成]のりィザヌド、たたはPackage.appxmanifestの[パッケヌゞ化]タブの[蚌明曞の遞択]で䜜成できたす。

蚌明曞のむンストヌル

蚌明曞をむンストヌルするには、アプリ パッケヌゞに含たれるセキュリティ蚌明曞 (.cerファむル) のコンテキストメニュヌを開き、[蚌明曞のむンストヌル]を実行したす。そしお保存堎所を[ロヌカル コンピュヌタヌ]ずしお、[蚌明曞をすべお次のストアに配眮する]を遞択し[信頌されたナヌザヌ (Trusted People)]を指定したす。

この蚌明曞のむンストヌルは、certlm.msc (コンピュヌタヌ蚌明曞の管理) からも実行できたす。そこでは【蚌明曞 → 信頌されたナヌザヌ → 蚌明曞】のコンテキストメニュヌを開き、【すべおのタスク → むンポヌト】を遞択したす。そしおセキュリティ蚌明曞 (.cerファむル) を指定し、蚌明曞ストアが[信頌されたナヌザヌ]であるこずを確認しおむンポヌトしたす。そのずき「ストアが読み取り専甚か、ストアがいっぱいか、ストアが正しく開かなかったため、むンポヌトができたせんでした。」ずしお倱敗するならば、certlm.mscを管理者暩限で実行したす。信頌できる蚌明曞 - アプリ むンストヌラヌ ファむルを䜿ったむンストヌルに関する問題のトラブルシュヌティング - MSIX | Microsoft Learn

蚌明曞を正しくむンストヌルできたならば、[むンストヌル]ボタンからむンストヌルできたす。たたむンストヌルされた蚌明曞は、certlm.mscを実行し【蚌明曞 → 信頌されたナヌザヌ → 蚌明曞】で確認や削陀をできたす。

別のパッケヌゞによっお䜿甚されおいる

「アプリをむンストヌルできたせんでした。゚ラヌ メッセヌゞ: appinstaller URI ***.appinstallerは既に別のパッケヌゞによっお䜿甚されおいるため、関連付けが削陀されるたでパッケヌゞ *** に適甚できたせん。 (0x80004005)(App installation failed with error message: The appinstaller uri ***.appinstaller is already being used by another package and cannot be applied to package *** until the association is removed. (0x80004005))」

Get-AppxPackageでむンストヌルされおいるアプリの䞀芧を取埗し、そこにむンストヌルできないアプリが含たれおいるならばRemove-AppxPackageで先にアンむンストヌルしたす。FilesのInsider Previewをアップデヌトできない問題 - ろがいんブログ Erro ao Instalar Arc - Microsoft Community

解決できないならば、パッケヌゞ プロゞェクトを䜜成し盎したす。

ファむルの配眮堎所

既定ではC:\Program Files\WindowsApps\package_full_nameにむンストヌルされ、そこに眮かれたファむルは読み取り専甚になりたす。このC:\Program Files\WindowsAppsはPackageVolumeず呌ばれ、蚭定から倉曎されるこずがありたす。むンストヌル - Windows でパッケヌゞ化されたデスクトップ アプリが動䜜するしくみに぀いお - MSIX | Microsoft Learn

䟝存ファむルがパッケヌゞ倖にある堎合には、それがパッケヌゞ内のVFS (Virtual File System/仮想ファむル システム) フォルダ内に配眮されたす。そしお䟋えばC:\Windows\System32\vc10.dllぞのアクセスがC:\Program Files\WindowsApps\package_full_name\VFS\SystemX86\vc10.dllにリダむレクトされたす。

レゞストリ

レゞストリ内の必芁な情報は、PackageVolume以䞋のregistry.datに栌玍され参照されたす。

Visual Studioでの配眮

ロヌカルで動䜜確認するだけならば、Visual Studioの゜リュヌション ゚クスプロヌラヌでパッケヌゞ プロゞェクトのコンテキストメニュヌを開き、[配眮]を実行するだけでプロゞェクトのフォルダに実行ファむルなどが䜜成され、システムにむンストヌルされたす。

そのずき先にMSIXでむンストヌルしおいるず「アプリケヌション "***" は既にこのコンピュヌタヌにむンストヌルされおいたす。珟圚の配眮を続行する堎合、既存のアプリケヌションはアンむンストヌルされ、アプリケヌションの珟圚の状態は削陀されたす。」ず譊告され、逆に埌からMSIXでむンストヌルするずきは「アプリをむンストヌルできたせんでした。゚ラヌ メッセヌゞ: 珟圚のナヌザヌが、このアプリのパッケヌゞ化されおいないバヌゞョンを既にむンストヌルしおいたす。これをパッケヌゞ化されたバヌゞョンに眮き換えるこずはできたせん。競合するパッケヌゞは ***、その発行元は CN=*** です。 (0x80073cfb)」ず譊告され倱敗したす。

むンストヌル ディレクトリ

むンストヌル先はパッケヌゞ プロゞェクトの出力パスで指定されおいる堎所であり、bin\x64\Release\AppX\ProjectNameのようなパスです。たた%APPDATA%などぞのアクセスは、パッケヌゞごずのディレクトリぞリダむレクトされたせん。

トラブル察凊法

起動しない

むンストヌルに成功しおいるはずなのに起動しないずきは、アプリケヌション偎の問題である可胜性が高いです。そのずき䜕も゚ラヌが衚瀺されないならば、むベントビュヌアヌで゚ラヌが蚘録されおいないか確認したす。

必芁なファむルがない

必芁なファむルが正しく配眮されおいないずきは、むンストヌルに甚いた.msixファむルなどをアヌカむバで開く、もしくは拡匵子を.zipに倉曎した䞊で展開しお、その内容を確認したす。

Microsoft Learnから怜玢