Lazarusで作成したWin32アプリをAPPXにパッケージする方法
追記:
Window11から、パッケージングは不要になるとの事。
Lazarusで作成した、Win32API 形式のバイナリ実行ファイルを、Microsoft Store に登録するために、APPX形式にパッケージ化する手順のメモ。これまためったにやらないことで忘れそうだから。
なお、Visual Studio で作ったプロジェクト(WPFとか)限定ですが、パッケージングプロジェクトを追加してパッケージングするという超簡単な方法があります。本記事は、Lazarusなどで開発したアプリのパッケージング方法です。ぜひ本記事を読んで、その面倒くささに泣いてください。
因みに、「UWP化する」という表現が一般のニュース記事とかでも使われることが結構あるけれど、混乱の元ですね。「デスクトップコンバーター(Desktop App Converter)」という名前もまた語弊があって、APPX形式にパッケージ化するだけです。.NetのUWPに変換される訳ではなかったり。
さらに、Win32API形式とは、アプリの32Bit、64Bitとは直接には関係なく、Win32の64bit版アプリとかいう言い方も一般的には出来てしまいます。これは色々と過去からの由来があって長くなるので割愛。単に、Windows 16bitでもなく、.Netランタイムで動くのでもないWindows ネイティブ、ぐらいな感じです。Win32=プラットフォーム、32Bit・64Bit=アーキテクチャー。
さて本題の、Lazarusで作成したアプリケーションのパッケージ化。
手順
“Desktop App Converter”をストアからインストールして、すぐには起動せず、スタートメニューから、「管理者として実行」します。
そして、諸々のフォルダを作った上で、おもむろに、
DesktopAppConverter.exe -Installer C:\Apps\hoge\ -AppExecutable hoge.exe -Destination C:\Output -PackageName "Hoge" -Publisher "CN=fuga" -Version 0.0.0.1 -MakeAppx -Sign -Verbose -Verify
といった感じで実行。
ローカルでテストする為に、ローカルでAPPXアプリをインストール・実行するには、
Add-AppxPackage -Register C:\Output\hoge\PackageFiles\AppxManifest.xml
AppxManifest.xmlを指定するんですね。
これで、スタートメニューに登録されているはずです。
ただ、これだと、ファイルコピーにスタートメニュー登録、ぐらいしかできません。あれやこれやカスタマイズしたければ、素のXMLを編集して、コマンドラインで、makeappxです。さぁ、地獄へw
https://docs.microsoft.com/en-us/uwp/schemas/appxpackage/uapmanifestschema/element-package
makeappxについてはこちら
https://docs.microsoft.com/ja-jp/windows/uwp/packaging/create-app-package-with-makeappx-tool
メンドイ。x100
最後に、
https://docs.microsoft.com/en-us/windows/uwp/debug-test-perf/windows-app-certification-kit
で確認。エラーでなければOK。
因みにですが、ログを見ると、「64bit実行ファイル発見!」みたいな事が書いてありまして、「32bitも用意するとより多くの~」ってのがありました。両方用意するの面倒なので、64bit版Windowsでも問題なく動作する、32bit版exe一つで手抜きします。というか、両方同梱する簡単な方法があるのかな。。。
因みに、Lazarusで32bit・64bitクロスコンパイルの方法。
公式サイトから、
https://www.lazarus-ide.org/index.php?page=downloads
アドオンをLazarusと同じフォルダにインストール。
lazarus-1.8.0-fpc-3.0.4-cross-i386-win32-win64.exe
これで、ビルドターゲットを切り替える(Target OS to Win32 and Target CPU family to i386)だけで、クロスコンパイルが出来るようになる。元に戻すのは、(win64、x86_64)
https://forum.lazarus.freepascal.org/index.php/topic,8514.15.html
そして、動作の確認。
あれ、ファイルの関連付けがされてないや、って場合は下記の通り、AppxManifest.xmlを編集。
https://docs.microsoft.com/ja-jp/windows/uwp/porting/desktop-to-uwp-extensions
アイコンが。。。という場合は、AppxManifest.xmlと同じフォルダに生成されているAssetsフォルダ内の画像を差し替えられるようです。各サイズに40個も生成されていて萎えますが。。いい加減、SVG(Path形式)にならないかな。。。