已封裝傳統型應用程式的已知問題

本文包含在為傳統型應用程式建立 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 Update(版本 14393.351 - KB3197954)於 10/27/16 發行,其中包含解決此問題的重要修正程式。 如果您遇到此問題,請更新您的電腦。 如果您因為電腦在登入前重新啟動而無法更新電腦,您應該使用系統還原將系統復原到安裝其中一個受影響應用程式之前的時間點。 如需如何使用系統還原的資訊,請參閱 Windows 10 中的復原選項。

如果更新無法修正問題,或您不確定如何復原您的計算機,請連絡 Microsoft 支援服務

如果您是開發人員,建議您避免在不包含此更新的 Windows 版本上安裝已封裝應用程式。 請注意,這麼做將會使您的應用程式無法提供給尚未安裝更新的使用者。 若要將應用程式的可用性限制為僅提供給已安裝此更新的使用者,請修改 AppxManifest.xml 檔案,如下所示:

<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.14393.351" MaxVersionTested="10.0.14393.351"/>

如需有關 Windows Update 的詳細數據,請參閱:

當您簽署應用程式時可能出現的常見錯誤

Publisher 和 cert 不相符會導致 Signtool 錯誤「錯誤:SignerSign() Failed」 (-2147024885/0x8007000b)

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 上發問。 我們的團隊會監視這些標籤