ここ最近の 4D のバージョンでは、独自のビルドチェーンを作成するためのさまざまな機能が追加されてきました。たとえば、以下のようなものです:
- .zip フォルダーを作成する機能
- 実行ファイルや “dll” ファイルに著作権などの情報を追加する機能
- “info.plist” ファイルを作成する機能
- 新しい build4D コンポーネントの搭載
4D v20 では、2つの新機能により、4Dコードでスタンドアロンまたはクライアント/サーバーアプリケーションの作成を仕上げまでおこなうことができます:
- 実行ファイルへのアイコンの追加
- サーバーまたはスタンドアロンアプリケーションの配布ライセンスファイルの生成 (サーバーアプリケーションは OEMライセンスのみ)
exeファイルにアイコンを追加する
Windows では、File クラスの setAppInfo 関数を使用することで、実行ファイルに会社名や著作権などの情報を追加することができます。この関数に、アイコンとして使用する “.ico” ファイルを渡すための、新しい WinIcon 属性が追加されました。
以下が、コードの一例です:
var $exeFile : 4D.File
var $iconFile : 4D.File
$exeFile:=Folder(fk desktop folder).file("myApp/myApp.exe")
$iconFile:=File("/RESOURCES/myApp.ico")
$exeFile.setAppInfo(New object("WinIcon"; $iconFile.path))
なお、macOS では、setAppInfo 関数が追加されたときから、これはすでに可能です。
“.app” ファイルにアイコンを追加するには、アプリケーションの “Resources” フォルダーに “.icns” ファイルを置く必要があります。次に、”info.plist “ファイルに “CFBundleIconFile” というキーを追加し、”Resources” フォルダーを基準としたアイコンの相対パスを記述します。
var $plistFile : 4D.File
$pListFile:= Folder(fk desktop folder).file("myApp.app/Contents/Info.plist")
$pListFile.setAppInfo(New object("CFBundleIconFile";"myApp.icns"))
配布ライセンスを生成する
新しい “Create deployment license” コマンドにより、サーバーまたはシングルユーザーアプリケーションのライセンスを作成することができます。これをおこなうには、生成されたアプリケーションフォルダーとライセンスファイルを引数として渡して、配布ライセンスを生成する必要があります。
シングルユーザーアプリケーションの場合
var $status : Object
var $application : 4D.File
var $license : 4D.File
$license:=Folder(fk licenses folder).file("4UUD200-xxx.license4D")
$application:=Folder(fk desktop folder).folder("myApp.app")
$status:=Create deployment license($application; $license)
OEMライセンス付きサーバーアプリケーションの場合:
var $status : Object
var $application : 4D.File
var $serverLicense; $oemLicense : 4D.File
$serverLicense:=Folder(fk licenses folder).file("4UOS200-xxx.license4D")
$oemLicense:=Folder(fk licenses folder).file("4DOM200-xxx.license4D")
$application:=Folder(fk desktop folder).folder("myApp.app")
$status:=Create deployment license($application; $serverLicense; $oemLicense)
次は…
Github 上には、独自のビルドチェーンを作成するための Build4D というコンポーネントがあります。現在のところは、コンパイルされたデータベースやコンポーネントの作成をカスタマイズして自動化することができます。今後の開発にぜひご期待ください。