パッケージ化されたデスクトップ アプリに関する既知の問題
この記事では、デスクトップ アプリの MSIX パッケージを作成するときに発生する可能性のある既知の問題について取り上げます。
次のエラーが表示されます。MSB4018: "GenerateResource" タスクが予期せずに失敗しました
これは、サテライト アセンブリをパッケージ リソース インデックス (PRI) ファイルに変換しようとしたときに発生することがあります。
私たちはこの問題を把握しており、より長期的な解決策に取り組んでいるところです。 一時的な回避策として、次の XML 行をホスティング プロジェクト ファイルの最初の PropertyGroup 要素に追加することで、リソース ジェネレーターを無効にすることができます。
<AppxGeneratePrisForPortableLibrariesEnabled>false</AppxGeneratePrisForPortableLibrariesEnabled>
エラー コード 0x139 のブルー スクリーン (KERNEL_SECURITY_CHECK_FAILURE)
Microsoft Store のアプリをインストールまたは起動した後、予期せず 0x139 (KERNEL_SECURITY_CHECK_ FAILURE) というエラーでコンピューターの再起動が発生することがあります。
影響を受けることがわかっているアプリには、Kodi、JT2Go、Ear Trumpet、Teslagrad などがあります。
この問題に対処するための重要な修正プログラムが含まれた Windows 更新プログラム (バージョン 14393.351 - KB3197954) が 2016 年 10 月 27 日 にリリースされました。 この問題が発生した場合は、コンピューターを更新してください。 ログインする前にコンピューターが再起動されるため PC を更新できない場合は、システムの復元を使用して、影響を受けたアプリをインストールする前の状態にシステムを回復する必要があります。 システムの復元の使用方法については、「Windows 10 の回復オプション」を参照してください。
更新しても問題が解決しない場合や、PC を回復する方法がわからない場合は、Microsoft サポートにお問い合わせください。
開発者の方には、この更新プログラムが含まれていないバージョンの Windows にパッケージ化されたアプリケーションをインストールしないことをお勧めします。 これを実行すると、更新プログラムをインストールしていないユーザーはアプリケーションを利用できないことにご注意ください。 この更新プログラムをインストールしたユーザーだけがアプリケーションを使用できるようにするには、AppxManifest.xml ファイルを次のように変更します。
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.14393.351" MaxVersionTested="10.0.14393.351"/>
Windows Update に関する詳細については、以下を参照してください。
- https://support.microsoft.com/kb/3197954
- https://support.microsoft.com/help/12387/windows-10-update-history
アプリに署名するときに表示される可能性のある一般的なエラー
発行元と証明書の不一致により、「エラー: SignerSign() が失敗しました」 (-2147024885/0x8007000b) という Signtool エラーが発生する
Windows アプリ パッケージ マニフェストの発行元エントリは、署名に使用する証明書のサブジェクトと一致する必要があります。 次の方法のいずれかを使用して、証明書のサブジェクトを表示できます。
オプション 1: PowerShell
次の PowerShell コマンドを実行します。 同じ発行元情報を持つ .cer または .pfx のいずれかを証明書ファイルとして使用できます。
(Get-PfxCertificate <cert_file>).Subject
オプション 2: エクスプローラー
エクスプローラーの証明書をダブルクリックし、[詳細] タブを選び、一覧の [サブジェクト] フィールドを選びます。 これで、内容をコピーすることができます。
オプション 3: CertUtil
コマンド ラインから PFX ファイルに certutil を実行し、出力から [サブジェクト] フィールドをコピーします。
certutil -dump <cert_file.pfx>
無効な PE 証明書 (0x800700C1)
これは、パッケージに証明書が破損しているバイナリが含まれている場合に発生する可能性があります。 このエラーが発生する、いくつかの理由を以下に示します。
証明書の開始がイメージの最後ではありません。
証明書のサイズが正の数ではありません。
証明書の開始が、32 ビットの実行可能ファイルの
IMAGE_NT_HEADERS32
構造の後または 64 ビットの実行可能ファイルのIMAGE_NT_HEADERS64
構造の後ではありません。証明書ポインターが WIN_CERTIFICATE 構造体に対して適切にアラインされていません。
無効な PE 証明書を含むファイルを見つけるには、コマンド プロンプトを開き、APPXSIP_LOG
という名前の環境変数を 1 の値に設定します。
set APPXSIP_LOG=1
次に、コマンド プロンプトで、アプリケーションにもう一度署名します。 次に例を示します。
signtool.exe sign /a /v /fd SHA256 /f APPX_TEST_0.pfx C:\Users\Contoso\Desktop\pe\VLC.appx
無効な PE 証明書を含むファイルに関する情報は、コンソール ウィンドウに表示されます。 次に例を示します。
...
ERROR: [AppxSipCustomLoggerCallback] File has malformed certificate: uninstall.exe
...
次のステップ
ご質問があるでしょうか。 Stack Overflow でお問い合わせください。 Microsoft のチームでは、これらのタグをチェックしています。