「AlicePackage」の版間の差分
編集の要約なし |
|||
59行目: | 59行目: | ||
|- | |- | ||
|8 | |8 | ||
| | |(未使用) | ||
|} | |} | ||
=署名= | =署名= | ||
AlicePackageにデジタル署名を添付することで、そのパッケージファイルが改竄されておらず、正しい提供元から提供されていることを確認することができます。署名されたAlicePackageは、未書名のパッケージファイルに比べて実行されるまで時間がかかります。署名済みAlicePackageの制御コードの末尾には<code>0x53</code>が入ります。 | AlicePackageにデジタル署名を添付することで、そのパッケージファイルが改竄されておらず、正しい提供元から提供されていることを確認することができます。署名されたAlicePackageは、未書名のパッケージファイルに比べて実行されるまで時間がかかります。署名済みAlicePackageの制御コードの末尾には<code>0x53</code>が入ります。 |
2022年2月15日 (火) 11:46時点における版
AlicePackageは、プログラムのスクリプト、リソース、ライブラリやパッケージを含むAliceScriptアプリパッケージ形式です。
AlicePackageファイルはそのマジックナンバー「ICE」(16進表現で49 43 45
とパッケージタイプを表す1バイトで識別できます。
AlicePackageを作成する方法について知るには、チュートリアル:パッケージのビルドを参照してください。
ファイル構造
長さ | 内容 |
4 | マジックナンバー |
1 | ファイルスイッチ |
3 | 予備領域 |
16 | 制御コード |
32 | 解凍用データ |
↓ | パッケージコンテンツ |
ファイルスイッチ
ファイルスイッチは、パッケージ前方にある8ビット(1バイト)の領域です。それぞれのビットには、パッケージの性質を表すフラグが含まれます。
インデックス | 内容 |
1 | 署名済みパッケージの場合1 |
2 | (未使用) |
3 | (未使用) |
4 | (未使用) |
5 | (未使用) |
6 | (未使用) |
7 | (未使用) |
8 | (未使用) |
署名
AlicePackageにデジタル署名を添付することで、そのパッケージファイルが改竄されておらず、正しい提供元から提供されていることを確認することができます。署名されたAlicePackageは、未書名のパッケージファイルに比べて実行されるまで時間がかかります。署名済みAlicePackageの制御コードの末尾には0x53
が入ります。
署名するAlicePackageには、パッケージコンテナの最上部にcertificate.pfx
ファイルを(このままの名前で)配置する必要があります。PFXファイルは、パッケージの検証に必要な証明書を表すファイルです。署名の検証はパッケージマニフェストファイルが読み込まれる前に読み込まれます。
パッケージマニフェストファイル
すべてのパッケージは、パッケージコンテナの最上部にmanifest.xml
ファイルを(このままの名前で)配置する必要があります。パッケージマニフェストファイルは、パッケージに関する情報をビルドツールやAliceScriptインタプリンタに説明するものです。まずは次の例を参照してください。
<?xml version="1.0" encoding="utf-8"?> <ice:package xmlns:ice="http://schemas.wsoft.gq/alice/ice"> <ice:name>Hello,Package</ice:name> <ice:version>1.0</ice:version> <ice:publisher>WSOFT</ice:publisher> <ice:description>Hello,World!とだけ表示します</ice:description> <ice:script> print("Hello,World!"); </ice:script> <ice:target>any</ice:target> </ice:package>
パッケージマニフェストファイルは、XML形式で、少なくとも次の情報を記述する必要があります。
- Name属性
Name属性は、このパッケージの名前を表します。
- Script属性
Script属性は、このパッケージのエントリポイントを表します。このパッケージが読み込まれたとき、AliceScriptインタプリンタはエントリポイントに記述された内容を順番に実行します。 Script属性の指定には、インラインスクリプトを使用する方法と、有効なスクリプトへのリンクを使う方法の二通りがあります。