Lazarusで作成したアプリをAPPXにパッケージ

Lazarusで作成した、Win32API 形式のバイナリ実行ファイルを、Microsoft Store に登録するために、APPX形式にパッケージ化する手順のメモ。これまためったにやらないことで忘れそうだから。

因みに、「UWP化する」という表現が使われることが結構あるけれど、混乱の元ですね。「デスクトップコンバーター(Desktop App Converter)」という名前もまた語弊があって、APPX形式にパッケージ化するだけです。.NetのUWPに変換される訳ではなかったり。

さらに、Win32API形式とは、アプリの32Bit、64Bitとは直接には関係なく、Win32の64bit版アプリとかいう言い方も一般的には出来てしまいます。これは色々と過去からの由来があって長くなるので割愛。単に、Windows 16bitでもなく、.Netランタイムで動くのでもないWindows ネイティブ、ぐらいな感じです。Win32=プラットフォーム、32Bit・64Bit=アーキテクチャー。

さて本題の、Lazarusで作成したアプリケーションのパッケージ化。

追記: Visual Studio で作ったプロジェクト(WPFとか)限定ですが、簡単な方法があります。それ以外の方は、飛ばして先を読んで、泣いてください。

 

Package a .NET desktop application using the Desktop Bridge and Visual Studio Preview

サンプルプロジェクトソース。

https://github.com/Microsoft/Windows-Packaging-Samples

https://github.com/Microsoft/DesktopBridgeToUWP-Samples/blob/master/Samples/DesktopAppTransition/PhotoStoreDemo.Package/package.appxmanifest

 

 

以下、Visual Studio以外で作った場合

 

基本的にはこちらで紹介されている方法を参考に。

Lazarusで作った場合、ネイティブに単一のexeに出来るので、インストーラーなどというものは不要でござる、という感じですが。。。

あと、Visual Studio の、JavaScript UWPプロジェクトをいけにえにして、IDEを使ってAPPXを生成する裏技的方法もあるようです。(が、JavaScriptプロジェクトを使うのがちょっと。。。)

今回は素直にDesktopAppConverter.exeを使います。

試して無いのでアレですが、単一exeでなく、インストーラーをパッケージ化するには、Windows 10 Proが必要っぽいです。でないと、”Containers’ is not available on your system.” 言われて変換できません。コンテナって仮想化に必要なんでしょうね。

 

手順

“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

XMLスキーマの参照はこちら。

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クロスコンパイルの方法。

Lazarusで、Windows 64 bit と 32bit をクロスコンパイル

そして、動作の確認。

 

あれ、ファイルの関連付けがされてないや、って場合は下記の通り、AppxManifest.xmlを編集。

https://docs.microsoft.com/ja-jp/windows/uwp/porting/desktop-to-uwp-extensions

アイコンが。。。という場合は、AppxManifest.xmlと同じフォルダに生成されているAssetsフォルダ内の画像を差し替えられるようです。各サイズに40個も生成されていて萎えますが。。いい加減、SVG(Path形式)にならないかな。。。

その他参考。

従来のアプリをWindows 10のUWPアプリ形式にパッケージングする「Desktop App Converter」

 

追記:Visual StudioでWPFで作ったアプリは、WapProjTemplateを使って、IDEで、.appxuploadというファイルが作られて、そのままアップロードできそうな感じですが、Win32APIアプリと同じく、RunFullTrust権限が必要なので、別途申請しないといけない。

Leave a Reply