1. 程式人生 > >簽署 Centennial Program Addendum,使用 Desktop Bridge 將 Win32 應用轉製成 UWP

簽署 Centennial Program Addendum,使用 Desktop Bridge 將 Win32 應用轉製成 UWP

原文 簽署 Centennial Program Addendum,使用 Desktop Bridge 將 Win32 應用轉製成 UWP

能上架 Windows 應用商店的並不一定必須是 UWP 應用程式或者 PWA 程式,也可以是普通的 Win32 應用程式。典型的上架應用商店的應用有微信、Telegram、Snipaste 等。使用 Desktop Bridge,我們即可以為我們的普通 Win32 應用程式做一個 UWP 的包來。


本文內容

商店中那些轉制的應用

如果你並沒有感受到 Win32 轉制的商店應用和原生的 UWP 或 PWA 應用有什麼不同,可以嘗試體驗下面的三款轉制應用。

瞭解 Desktop Bridge

Desktop Bridge,可能還可以叫做“桌面橋”,它存在的目的便是將已有的 WPF 程式、Windows Forms 程式和其他 Win32 應用轉換成應用商店應用。而桌面橋提供了一種與 UWP 一致的 Windows 應用包,使用這種 Windows 應用包,普通的 Win32 應用也能訪問 UWP 的 API。

需要注意的是,Desktop Bridge 要求的 Windows 系統最低版本為 1607。也就是說,如果要選擇 SDK 的版本,需要選擇 10.0.14393 或以上版本。

當然,並不是所有的 Win32 應用程式都支援直接轉制到 UWP,如果應用會動態載入不在安裝包中的 dll 或者會試圖修改系統檔案和配置,那麼必須去掉這些程式碼才能完成轉制。如果希望瞭解更多不支援的型別,建議閱讀官方文件:Prepare to package an app (Desktop Bridge) - UWP app developer - Microsoft Docs

在 Visual Studio 中建立 Windows 應用打包工程

使用 Visual Studio 開啟原來的 Win32 程式的解決方案,在解決方案中新建一個 Windows 應用程式包專案(Windows Application Packaging Project)。我們將使用這個專案為轉制應用打包。

Windows Application Packaging Project

在選擇 SDK 時,目標版本我選擇了 17134,但注意最低版本必須是 14393 或以上。

選擇 SDK 版本

稍等片刻,我們便能看到 Visual Studio 已經為我們準備好的應用程式包工程。

Whitman.Package 工程

在 Applications(應用程式)一欄我們右擊選擇新增引用。

新增引用

選擇我們此前的程式

隨後展開 Applications(應用程式)一欄,將我們的 Win32 程式右擊設為入口點。

設定入口點

編譯剛剛設定好的打包專案。如果之前的專案能夠編譯通過,那麼這個新的打包專案理論上也是能編譯通過的。

除錯部署的 Whitman

將這個新專案設定為啟動專案,啟動它即可進行正常的除錯,能夠正常斷點、單步等等。

修改包清單併發布應用

各種元資料

另外,轉制的應用和原生的 UWP 應用一樣,釋出之前也需要為應用設計圖示,設定應用顯示名稱、包名稱、關聯應用商店。

不得不說,為商店應用設計圖示是一件非常繁雜的工作,不過,最終的效果確實非常喜人的。

需要注意,在 https://dev.windows.com 上釋出應用時,由於我們是轉制的應用,所以 runFullTrust 是必選項。如果你在提交應用時遇到了以下提示框,微軟的官方文件提示無需寫明理由。

This capability is also required for any desktop application that is delivered as an appx package (as with the Desktop Bridge), and it will automatically appear in your manifest when packaging these apps using the Desktop App Converter (DAC) or Visual Studio. You won’t need to request approval to use this capability if you already received permission using our form.

建議在給稽核人員的提示中,寫明我們是轉制應用,以引起稽核人員的注意。

通過認證

如果沒有接受 Centennial Program Addendum,那麼提交是不被允許的,並且在上傳 appxupload 的時候會有警告開始提示了:

Package acceptance validation warning: You must contact [email protected] and get approval before you can submit this app.

當然,你可以忽略這樣的警告繼續提交,但那樣的話最終認證會失敗,並提示:

Notes To Developer

Your developer account has not been approved to submit apps converted with the Desktop Bridge as you have not yet accepted the Centennial Program Addendum. Please resubmit your request for approval.

如果無視警告,那麼下次提交提示就會變成錯誤而不是警告了:

Package acceptance validation error: You need to accept the Centennial Program Addendum before you can submit this app.

Centennial Program Addendum
▲ You need to accept the Centennial Program Addendum before you can submit this app.

提示要求我們必須同意 Centennial Program Addendum 協議,然而我們在 https://partner.microsoft.com/en-us/dashboard/windows/overview 的設定中點進去 Agreements 是找不到這項協議的。

Agreements

已簽署協議

以下劃重點!!!

你需要先提交應用,並時常關注 https://partner.microsoft.com/en-us/dashboard/account/agreements 中是否會新增一項協議提示,就是下圖這個:

Centennial Program Addendum 協議

當出現時,點選接受即可。這項協議在微軟商店發給你的三天之內才會出現,超過三天還沒有同意,這項協議就會自動移除。在我的實際提交中,等待郵件通知之時,三天基本上都過完了,所以稍微不及時收郵件,這項協議就點不開了,就只能看到下面這張圖片感嘆一聲 —— 又要重來!

Page Not Found

在同意了協議之後,你的協議列表中就會額外出現 Centennial Program Addendum 協議了。以後你可以繼續提交轉制應用。

簽署的開發者協議


參考資料

本文會經常更新,請閱讀原文: https://walterlv.com/post/windows-desktop-bridge.html ,以避免陳舊錯誤知識的誤導,同時有更好的閱讀體驗。