neri 0.9.7 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 54122cb7af8b62506615a9be8916791a0051fd6cfc4ad395727a23714997b019
4
- data.tar.gz: c79aa6b985eadfa33888aeb35af6fe70f4b17ec89d38d581bffccbf789de5b3b
3
+ metadata.gz: a69bc24a00b804f91211ee95df8ff4cbd43db19ffa265dafda123b8cc1c87399
4
+ data.tar.gz: 315b3287c553c02389813276f0b332111ebb437ecadb5b6f1bc950584ec46a78
5
5
  SHA512:
6
- metadata.gz: a3bf286b9a366b38a4c37749ea48d690724331bd5aa208a435cbff987e160fc501d2617014a05ac047864c6a97f62e3f571ca077857119877d392640ab542fb2
7
- data.tar.gz: d1830c564fdbe69c2418936ce86227509292ea0c05af462a5ac886fd8f8ebf5bbc931fb08a99a23dc71685df84d913bbe1b2c669eb31491fe17818b0b2fcf704
6
+ metadata.gz: f098e666b9692e27018aac75ff26983e056b3bcd63e8a55bc18dff4270a8585f4c2dd6ee06102c425dabcaac1dc946532ce3cecf779cd3fc49b43f4e856fe825
7
+ data.tar.gz: aee9f3181c90fc22bf2449b4630a7ec8405e7e629797a9ee7e28bc720592ebbe531b50a3bd1e1a363725b34453659baab4878ff91899df208098e9e2736c99e2
data/README.ja.md CHANGED
@@ -1,27 +1,26 @@
1
1
  # Neri
2
2
 
3
- Neri は、Ruby スクリプトを Ruby 未インストール環境向けに配布するためのパッケージングシステムです。
3
+ Neri は、Ruby スクリプトを Ruby 未インストール環境の Windows 向けに配布するためのパッケージングシステムです。
4
4
 
5
5
  同種の gem としては [OCRA](https://github.com/larsch/ocra) がありますが、以下のような違いがあります。
6
6
 
7
7
  - OCRA に比べての長所
8
8
  - 展開しない分、起動が速い。
9
- - 実行ファイルを複数作りたいとき、OCRA ではサイズの大きな実行ファイルを複数生成することになってしまうが、Neri ではシステムファイルを共有できるので、全体のサイズが大きくならずに済む。
9
+ - 実行ファイルを複数作りたいとき、OCRA ではサイズの大きな実行ファイルを複数生成することになってしまうが、Neri ではシステムファイルを共有できるため全体のサイズが大きくならずに済む。
10
10
  - OCRA には「日本語を含むユーザー名の環境では起動できない」という問題があるが、Neri にはない。
11
- - ただし Ruby のバージョンによっては、日本語を含むパス上では起動できない。(この点は OCRA も同様。)
12
11
  - OCRA に比べての短所
13
- - exe ファイルを作成するには、次のどちらかが必要。
14
- - gcc と windres(Ruby Installer 2 With Devkit を使用している場合、使用前に `ridk enable` を実行してパスを通す必要があるかもしれません。)
15
- - [Bat To Exe Converter](http://www.f2ko.de/en/b2e.php) ver.3
12
+ - 基本的に、[Ruby Installer 2](https://rubyinstaller.org/) With Devkit で Ruby をインストールした環境でしか利用できない。(なお、使用前に `ridk enable` を実行してパスを通す必要があります。)
16
13
 
17
14
  ## インストール
18
15
 
19
16
  $ gem install neri
20
17
 
21
- 現状、bundler での使用は保証できません。
18
+ bundler を用いた利用もできますが、その場合同梱するファイルが増えてしまうのでおすすめしません。
22
19
 
23
20
  ## 使い方
24
21
 
22
+ まず、`ridk enable` を実行して開発環境にパスを通す必要があります。
23
+
25
24
  $ neri [options] script.rb (other_files...) -- script_arguments
26
25
 
27
26
  上の例では、一度 "script.rb" を依存ファイルチェックのために実行し、
@@ -41,16 +40,18 @@ Neri は、Ruby スクリプトを Ruby 未インストール環境向けに配
41
40
  <dd>バージョンを表示します。</dd>
42
41
  <dt>--quiet</dt>
43
42
  <dd>実行中に途中経過等を表示しなくなります。</dd>
44
- <dt>--verbose</dt>
45
- <dd>実行中に詳細情報を表示するようになります。</dd>
43
+ <dt>--external-encoding</dt>
44
+ <dd>出力の文字コードを設定します。後述する --pause-text 等の設定で文字化けが生じる場合、sjis 等を設定してください。</dd>
46
45
  </dl>
47
46
 
48
47
  #### 依存ファイルの追加
49
48
 
50
49
  Neri は実行時に必要と思われるファイルを自動的に依存ファイルとして出力先にコピーしますが、
51
- 実行に必要なファイルが足りない場合もあります。
50
+ その判定がうまくいかず実行に必要なファイルが足りない場合もあります。
52
51
  そうした場合はこれらのオプションで依存ファイルを手動で追加する必要があります。
53
52
 
53
+ (もしくは、直接出力先に手動で必要なファイルをコピーするのも1つの方法です。)
54
+
54
55
  <dl>
55
56
  <dt>--dll &lt;dll1&gt;,&lt;dll2&gt;,...</dt>
56
57
  <dd>bin フォルダ内の指定された dll ファイルを依存ファイルに追加します。</dd>
@@ -58,7 +59,7 @@ Neri は実行時に必要と思われるファイルを自動的に依存ファ
58
59
  <dd>ロードパス($LOAD_PATH)内の指定されたファイルを依存ファイルに追加します。</dd>
59
60
  <dt>--gem &lt;gem1&gt;,&lt;gem2&gt;,...</dt>
60
61
  <dd>指定された gem のファイルを依存ファイルに追加します。
61
- デフォルトでは、該当 gem の lib フォルダ内のファイル一式を依存ファイルに追加します。
62
+ デフォルトでは、該当 gem の lib フォルダ内のファイル一式を依存ファイルに追加します。(たとえば `--gem gemname:dir1|dir2` とすれば、lib フォルダ以外のファイルを追加できます。)
62
63
  現状、gem 間の依存等はチェックしないので、必要な gem すべてを手動で追加する必要があります。</dd>
63
64
  </dl>
64
65
 
@@ -86,8 +87,8 @@ Neri はデフォルトでは、enc フォルダ内の文字コードライブ
86
87
  <dd>rubygems を使用します。このオプションを使わない場合、依存チェック時に使用した gem のファイルは vendor_ruby フォルダ内にコピーされ、rubygems 無しでも実行できるようになります。</dd>
87
88
  <dt>--enable-did-you-mean</dt>
88
89
  <dd>did_you_mean を使用します。</dd>
89
- <dt>--chdir-first</dt>
90
- <dd>実行時に、カレントフォルダを実行ファイルと同じフォルダに設定します。</dd>
90
+ <dt>--no-chdir</dt>
91
+ <dd>Neri で作成した実行ファイルは、デフォルトでは実行時にカレントフォルダを実行ファイルと同じフォルダに設定します。このオプションを使うとカレントフォルダを変更しなくなります。(このオプションを使うと、日本語フォルダ下などではうまく動かなくなる可能性があるので注意してください。)</dd>
91
92
  <dt>--pause-last</dt>
92
93
  <dt>--no-pause-last</dt>
93
94
  <dd>実行の最後に、pause を入れるか否かを設定します。省略した場合、コンソールアプリ(後述)の場合 on に、ウィンドウアプリの場合 off になります。</dd>
@@ -108,29 +109,23 @@ Neri はデフォルトでは、enc フォルダ内の文字コードライブ
108
109
  <dt>--encryption-key &lt;key&gt;</dt>
109
110
  <dd>データファイルの暗号化キーを設定します。省略した場合、暗号化は行われません。
110
111
  暗号化は簡単なものなので、解読されては困るような重要なデータには用いないでください。</dd>
112
+ <dt>--virtual-directory &lt;dirname&gt;</dt>
113
+ <dd>データファイルからファイルを読み出す際、Neri はまず実行時のカレントフォルダをもとにファイルを検索し、見つからない場合はこの virtual-directory をもとにファイルを検索します。省略した場合は自動的に適切な仮想パスを生成します。</dd>
111
114
  </dl>
112
115
 
113
116
  #### exe ファイルの作成
114
117
 
115
118
  <dl>
116
- <dt>--no-exe</dt>
119
+ <dt>--no-exe or --bat</dt>
117
120
  <dd>exe ファイルは作成せず、bat ファイルを作成します。</dd>
118
- <dt>--use-b2ec</dt>
119
- <dd>exe ファイルの作成を、Bat To Exe Converter を用いて行うようにします。</dd>
120
- <dt>--b2ec-path &lt;bat_to_exe_converter_path&gt;</dt>
121
- <dd>Bat To Exe Converter がパスの通ったところにない場合、このオプションで場所を指定してください。</dd>
122
121
  <dt>--icon &lt;iconfile&gt;</dt>
123
122
  <dd>アイコンを設定します。</dd>
124
123
  <dt>--windows or --invisible</dt>
125
124
  <dt>--console or --visible</dt>
126
125
  <dd>ウィンドウアプリにするかコンソールアプリにするかを設定します。
127
126
  ウィンドウアプリの場合、いわゆる「DOS窓」が開きません。
128
- 省略した場合、実行スクリプトファイルの拡張子が ".rbw" の場合、あるいは DXRuby を使用する場合にはウィンドウアプリになります。
127
+ 省略した場合、実行スクリプトファイルの拡張子が ".rbw" の場合、あるいは [DXRuby](http://dxruby.osdn.jp/) や [Gosu](https://www.libgosu.org/ruby.html), [LibUI](https://github.com/kojix2/libui) を使用する場合にはウィンドウアプリになります。
129
128
  そうでない場合はコンソールアプリになります。</dd>
130
- <dt>--x64</dt>
131
- <dd>64bit の exe ファイルを作成します。省略した場合、ruby 自体の bit 数に合わせます。 ※ Bat To Exe Converter 使用時のみ有効</dd>
132
- <dt>--uac-admin</dt>
133
- <dd>管理者として実行する exe ファイルを作成します。 ※ Bat To Exe Converter 使用時のみ有効</dd>
134
129
  <dt>--fileversion &lt;version&gt;</dt>
135
130
  <dt>--productversion &lt;version&gt;</dt>
136
131
  <dd>ファイルバージョン・製品バージョンを設定します。
@@ -148,56 +143,21 @@ Neri はデフォルトでは、enc フォルダ内の文字コードライブ
148
143
  <dd>コメント等を設定します。</dd>
149
144
  </dl>
150
145
 
151
- #### UPX
152
-
153
- [UPX](https://upx.github.io/) を使用することで、全体のファイルサイズを小さくすることができます。
154
-
155
- <dl>
156
- <dt>--use-upx</dt>
157
- <dd>UPX を使用します。</dd>
158
- <dt>--upx-path &lt;upx path&gt;</dt>
159
- <dd>UPX がパスの通ったところにない場合、このオプションで場所を指定してください。</dd>
160
- <dt>--upx_targets '&lt;glob&gt;'</dt>
161
- <dd>UPX を適用するファイルを指定します。デフォルトは 'bin/**/*.dll' です。</dd>
162
- <dt>--upx-options &lt;options&gt;</dt>
163
- <dd>UPX に渡すオプションを設定します。</dd>
164
- </dl>
165
-
166
- #### 7-Zip
167
-
168
- [7-Zip](http://7-zip.org/) を使用することで、出力ファイルをまとめて zip ファイルにすることができます。
146
+ ### neri.config ファイルによる設定
169
147
 
170
- <dl>
171
- <dt>--zipfile &lt;filename&gt;</dt>
172
- <dd>zip ファイルを作成します。</dd>
173
- <dt>--7zip-path &lt;7-zip path&gt;</dt>
174
- <dd>7-Zip がパスの通ったところにない場合、このオプションで場所を指定してください。</dd>
175
- </dl>
176
-
177
- #### Inno Setup
178
-
179
- [Inno Setup](http://www.jrsoftware.org/isinfo.php) を使用することで、インストーラーを作成することができます。※ あまりテストしていません。
180
-
181
- <dl>
182
- <dt>--innosetup &lt;inno_script&gt;</dt>
183
- <dd>.iss ファイルを指定します。</dd>
184
- <dt>--iscc-path &lt;iscc path&gt;</dt>
185
- <dd>iscc がパスの通ったところにない場合、このオプションで場所を指定してください。</dd>
186
- </dl>
148
+ HOME フォルダ、あるいはカレントフォルダに`neri.config`というファイルを用意しておくと、以上のオプションをいちいち入力しなくても、`neri.config`に書かれたオプション設定を使用します。
187
149
 
188
- #### レシピファイル
150
+ `neri.config`には上記のオプションを、下のように改行で区切って入力してください。
189
151
 
190
- 見てのとおり Neri の設定は多岐にわたるので、さまざまな設定を毎回入力するのは大変です。
191
- そこで、それらの設定を「レシピファイル」として保存・適用することができます。
152
+ ```
153
+ --icon myicon.ico
154
+ --encryption-key foo
155
+ --output-dir ../bar
156
+ ```
192
157
 
193
- <dl>
194
- <dt>--create-recipe &lt;recipefile&gt;</dt>
195
- <dd>レシピファイルを作成します。このオプションを指定した場合、実行ファイルの作成は行いません。</dd>
196
- <dt>--recipe &lt;recipefile&gt;</dt>
197
- <dd>レシピファイルを適用して、実行ファイルを作成します。</dd>
198
- </dl>
158
+ コマンドラインオプション←カレントフォルダ←ホームフォルダの順で優先されます。
199
159
 
200
- ## データファイルの活用
160
+ ## データファイルを活用したファイルの簡易隠蔽機能
201
161
 
202
162
  たとえば以下のようにすることで、script.rb だけでなく、data フォルダ内のデータ一式をデータファイルに収めることができます。
203
163
 
@@ -225,11 +185,31 @@ Neri.files # -> Array
225
185
 
226
186
  データファイル内にあるファイルの一覧を配列で返します。
227
187
 
228
- ### [DXRuby](http://dxruby.osdn.jp/) 等との連携
188
+ ### DXRuby 等との連携
229
189
 
230
190
  DXRuby を使用する場合、DXRuby の Image.load, Image.load_tiles, Sound.new を上書きし、データファイル内に画像・音声ファイルがあればそちらから読み込むようになります。
231
191
  これにより、スクリプトファイルを一切書き換えることなく、Neri を利用したファイルの簡易隠蔽機能が利用できます。
232
192
 
193
+ ### その他
194
+
195
+ #### 実行ファイル作成時のみ、スクリプトを早期に終了させたい場合
196
+
197
+ Neri は依存ファイルチェックのためにスクリプトを一度実行するので、その終了を待つか途中で強制終了させる必要があります。しかし、実行ファイル作成時には `NeriBuild` というモジュールが存在するので、以下のように `NeriBuild` が存在する場合は早期に終了するようにすることができます。
198
+
199
+ ```ruby
200
+ require "foobar"
201
+ # 必要なライブラリの読み込みがすべて終了
202
+ exit if defined? NeriBuild
203
+ ```
204
+
205
+ #### 実行ファイルのパス
206
+
207
+ Neri で作られた実行ファイルを実行すると、環境変数 `NERI_EXECUTABLE` に実行ファイルのパスが保存されます。
208
+
209
+ ```ruby
210
+ puts ENV["NERI_EXECUTABLE"]
211
+ ```
212
+
233
213
  ## Contributing
234
214
 
235
215
  Bug reports and pull requests are welcome on GitHub at https://github.com/nodai2hITC/neri
data/README.md CHANGED
@@ -1,75 +1,215 @@
1
1
  # Neri
2
2
 
3
- [日本語説明(こちらの方が詳細)](https://github.com/nodai2hITC/neri/blob/master/README.ja.md)
3
+ [日本語説明](https://github.com/nodai2hITC/neri/blob/master/README.ja.md)
4
+
5
+ Neri is a packaging system for distributing Ruby scripts on Windows without Ruby installation.
6
+
7
+ There is a similar gem [OCRA](https://github.com/larsch/ocra), but Neri has the following differences.
8
+
9
+ - Advantages compared to OCRA
10
+ - Faster startup due to no expansion.
11
+ - When you want to create multiple executable files, OCRA generates multiple large executable files, but Neri can share system files, so the overall size is not large.
12
+ - OCRA has the problem that it cannot be run in environments with user names containing Non-Ascii characters, but Neri does not have this problem.
13
+ - Disadvantages compared to OCRA
14
+ - Basically, Neri can be used only in the environment where Ruby is installed by [Ruby Installer 2](https://rubyinstaller.org/) With Devkit. (Also, you need to run `ridk enable` to pass it before use.)
4
15
 
5
16
  ## Installation
6
17
 
7
18
  $ gem install neri
8
19
 
9
- ## Usage
20
+ It is also possible to use Neri with bundler, but it is not recommended because it increases the number of files to be included.
21
+
22
+ ## How to use
23
+
24
+ First, you need to run `ridk enable` to set pass to the development environment.
10
25
 
11
26
  $ neri [options] script.rb (other_files...) -- script_arguments
12
27
 
28
+ In the example above, Neri run "script.rb" once to check for dependency files, and then copy the files you need as dependency files to the output folder.
29
+ And then create the executable file.
30
+
31
+ If you copy the entire output folder, you can run the script even in an environment without Ruby.
32
+
33
+ ### options:
34
+
35
+ #### Basic options
36
+
37
+ <dl>
38
+ <dt>--help or -h</dt>
39
+ <dd>Show help.</dd>
40
+ <dt>--version or -v</dt>
41
+ <dd>Show version of Neri.</dd>
42
+ <dt>--quiet</dt>
43
+ <dd>It will no longer display the progress during execution.</dd>
44
+ <dt>--external-encoding</dt>
45
+ <dd>Set the character encoding for the output. If you encounter garbled characters when using settings such as --pause-text (see below), please make this setting.</dd>
46
+ </dl>
47
+
48
+ #### Add dependent files
49
+
50
+ Neri will automatically copy the files that it thinks are necessary for execution to the output folder as dependent files.
51
+ However, there may be cases where that determination does not work and you do not have enough files for execution.
52
+ In such cases, you need to add the dependency files manually with these options.
53
+
54
+ (or copy the necessary files directly to the output destination manually.)
55
+
56
+ <dl>
57
+ <dt>--dll &lt;dll1&gt;,&lt;dll2&gt;,...</dt>
58
+ <dd>Add the specified dll file in the bin folder to the dependency files.</dd>
59
+ <dt>--lib &lt;lib1&gt;,&lt;lib2&gt;,...</dt>
60
+ <dd>Add the specified file in $LOAD_PATH to the dependency files.</dd>
61
+ <dt>--gem &lt;gem1&gt;,&lt;gem2&gt;,...</dt>
62
+ <dd>Adds the files of the specified gem to the dependency files.
63
+ By default, it will add the set of files in the lib folder of the gem to the dependency files. (You can use `--gem gemname:dir1|dir2` to add files other than the lib folder.)
64
+ Currently, the dependencies between gems are not checked, so you need to add all necessary gems manually.</dd>
65
+ </dl>
66
+
67
+ #### Encoding
68
+
69
+ By default, Neri adds all encoding files in the enc folder to the dependency files, but this increases the overall file size.
70
+
71
+ By specifying the encoding files to be copied with these options, you can minimize the amount of data.
72
+
73
+ <dl>
74
+ <dt>--no-enc</dt>
75
+ <dd>Do not add Encoding files to the dependency files except for the ones you actually used.</dd>
76
+ <dt>--encoding &lt;enc1&gt;,&lt;enc2&gt;,...</dt>
77
+ <dd>Manually specify the encoding file to be added.</dd>
78
+ </dl>
79
+
80
+ ↓ Example: Add only "windows_31j.so" and "japanese_sjis.so" to the dependency files.
81
+
82
+ $ neri --encoding windows_31j.so,japanese_sjis.so script.rb
83
+
84
+ #### Setting
85
+
86
+ <dl>
87
+ <dt>--enable-gems</dt>
88
+ <dd>Use rubygems. If you don't use this option, the necessary gem files will be copied to the vendor_ruby folder, so that you can run without rubygems.</dd>
89
+ <dt>--enable-did-you-mean</dt>
90
+ <dd>use did_you_mean</dd>
91
+ <dt>--no-chdir</dt>
92
+ <dd>By default, executables created by Neri will set the current folder to the same folder as the executable at runtime. With this option, the current folder will not be changed. (Please note that this option may not work well under Non-Ascii name folders.)</dd>
93
+ <dt>--pause-last</dt>
94
+ <dt>--no-pause-last</dt>
95
+ <dd>Set whether or not to include pause at the end of the execution. If omitted, it will be set to "on" for console applications (see below) and "off" for window applications.</dd>
96
+ <dt>--pause-text &lt;text&gt;</dt>
97
+ <dd>Sets the display contents when pause is applied.</dd>
98
+ </dl>
99
+
100
+ #### Output
101
+
102
+ <dl>
103
+ <dt>--output-dir &lt;dirname&gt;</dt>
104
+ <dd>Specifies the output folder name. If omitted, it will be the current folder (. /).</dd>
105
+ <dt>--system-dir &lt;dirname&gt;</dt>
106
+ <dd>Specify the name of the system folder where ruby and other files will be copied. The default is "system".</dd>
107
+ <dt>--datafile &lt;filename&gt;</dt>
108
+ <dd>Specify the data file name.If omitted, the name of the data file will be the file name of the executed script file with the extension changed to ".dat".
109
+ If you omit this option and there is no other file to put into the data file, the data file will not be created and the executed script file will be copied directly into the system folder.</dd>
110
+ <dt>--encryption-key &lt;key&gt;</dt>
111
+ <dd>Set the encryption key for the data file. If omitted, no encryption will be performed.
112
+ Since encryption is simple, it cannot be used for important data that must not be decrypted.</dd>
113
+ <dt>--virtual-directory &lt;dirname&gt;</dt>
114
+ <dd>When reading a file from a data file, Neri will first search for the file based on the current folder at runtime, and if not found, it will search for the file based on this virtual-directory.
115
+ If omitted, Neri will automatically generate the appropriate virtual path.</dd>
116
+ </dl>
117
+
118
+ #### Creating an executable file
119
+
120
+ <dl>
121
+ <dt>--no-exe or --bat</dt>
122
+ <dd>Do not create an exe file, but create a bat file.</dd>
123
+ <dt>--icon &lt;iconfile&gt;</dt>
124
+ <dd>Set the icon.</dd>
125
+ <dt>--windows or --invisible</dt>
126
+ <dt>--console or --visible</dt>
127
+ <dd>Set whether you want to use a windowed app or a console app.
128
+ If it is a windowed app, the command prompt will not open.
129
+ If omitted, it will be a windowed app if the executed script file extension is ".rbw", or if [DXRuby](http://dxruby.osdn.jp/), [Gosu](https://www.libgosu.org/ruby.html), or [LibUI](https://github.com/kojix2/libui) is used.
130
+ Otherwise, it will be a console app.</dd>
131
+ <dt>--fileversion &lt;version&gt;</dt>
132
+ <dt>--productversion &lt;version&gt;</dt>
133
+ <dd>Set the file version and product version.
134
+ Set &lt;version&gt; to four numbers separated by commas, such as 1,2,3,4.</dd>
135
+ <dt>--productname &lt;string&gt;</dt>
136
+ <dt>--internalname &lt;string&gt;</dt>
137
+ <dt>--description &lt;string&gt;</dt>
138
+ <dt>--company &lt;string&gt;</dt>
139
+ <dt>--trademarks &lt;string&gt;</dt>
140
+ <dt>--copyright &lt;string&gt;</dt>
141
+ <dd>Set the product name, internal name, file description, company name, trademarks, and copyrights.</dd>
142
+ <dt>--privatebuild &lt;string&gt;</dt>
143
+ <dt>--specialbuild &lt;string&gt;</dt>
144
+ <dt>--comments &lt;string&gt;</dt>
145
+ <dd>Set comments, etc.</dd>
146
+ </dl>
147
+
148
+ ### Configuration by neri.config file
149
+
150
+ If you create a file named `neri.config` in your HOME folder or the current folder, Neri will use the option settings written in `neri.config` without you having to enter each of the above options.
151
+
152
+ Enter the above options in `neri.config`, separated by a new line as shown below.
153
+
154
+ ```
155
+ --icon myicon.ico
156
+ --encryption-key foo
157
+ --output-dir ../bar
158
+ ```
159
+
160
+ Command line options ← Current folder ← Home folder takes precedence in this order.
161
+
162
+ ## Simple file hiding function using the data file
163
+
164
+ For example, you can put not only script.rb but also all the files in the data folder into a data file by doing the following.
165
+
166
+ $ neri script.rb data/*
167
+
168
+ Script files in the data file can be loaded with `require` or `load`.
169
+
170
+ Also, by adding `require 'neri'` in the original script file, you can access the files in the data file with the following methods.
171
+
172
+ ```ruby
173
+ Neri.file_exist?(filename) # -> bool
13
174
  ```
14
- options:
15
- --help or -h
16
- --version or -v
17
- --quiet
18
- --verbose
19
-
20
- --dll <dll1>,<dll2>,...
21
- --lib <lib1>,<lib2>,...
22
- --gem <gem1>,<gem2>,...
23
-
24
- --no-enc
25
- --encoding <enc1>,<enc2>,...
26
-
27
- --enable-gems
28
- --enable-did-you-mean
29
- --chdir-first
30
- --pause-last
31
- --no-pause-last
32
- --pause-text <text>
33
-
34
- --output-dir <dirname>
35
- --system-dir <dirname>
36
- --data-file <filename>
37
- --encryption-key <key>
38
-
39
- --no-exe
40
- --use-b2ec
41
- --b2ec-path <bat_to_exe_converter_path>
42
- --icon <iconfile>
43
- --windows or --invisible
44
- --console or --visible
45
- --x64
46
- --uac-admin
47
- --fileversion <string> # ex) 1,2,3,4
48
- --productversion <string> # ex) 1,2,3,4
49
- --productname <string>
50
- --originalfilename <string>
51
- --internalname <string>
52
- --description <string>
53
- --company <string>
54
- --trademarks <string>
55
- --copyright <string>
56
- --privatebuild <string>
57
- --specialbuild <string>
58
- --comments <string>
59
-
60
- --use-upx
61
- --upx-path <upx path>
62
- --upx_targets '<glob>'
63
- --upx-options <options>
64
-
65
- --zipfile <filename>
66
- --7zip-path <7-zip path>
67
-
68
- --innosetup <inno_script>
69
- --iscc-path <iscc path>
70
-
71
- --create-recipe <recipefile>
72
- --recipe <recipefile>
175
+
176
+ Returns true if the file exists in the data file or actually exists, false if it does not.
177
+
178
+ ```ruby
179
+ Neri.file_read(filename, encoding = Encoding::BINARY) # -> String
180
+ ```
181
+
182
+ Reads the entire file that exists in the data file or in as a real file file (the size to be read cannot be specified). If the file exists both in the data file and as a real file, the one in the data file takes precedence.
183
+
184
+ ```ruby
185
+ Neri.files # -> Array
186
+ ```
187
+
188
+ Returns a list of files in a data file as Array.
189
+
190
+ ### Cooperation with DXRuby, etc.
191
+
192
+ When using DXRuby, Neri will overwrite DXRuby's Image.load, Image.load_tiles, and Sound.new, and load from the image and sound files in the data file if there are any.
193
+ This allows you to use Neri for simple file hiding without having to rewrite any script files.
194
+
195
+ ### Other
196
+
197
+ #### If you want to exit the script early only when the executable is created
198
+
199
+ Neri executes the script once to check for dependency files, so you need to wait for it to finish or force it to quit in the middle. However, since the module `NeriBuild` is present when the executable is created, you can make it exit early if `NeriBuild` is present, as follows.
200
+
201
+ ```ruby
202
+ require "foobar"
203
+ # All necessary libraries have been loaded.
204
+ exit if defined? NeriBuild
205
+ ```
206
+
207
+ #### Path of the executable file
208
+
209
+ When you run an executable created by Neri, the path of the executable will be saved in the environment variable `NERI_EXECUTABLE`.
210
+
211
+ ```ruby
212
+ puts ENV["NERI_EXECUTABLE"]
73
213
  ```
74
214
 
75
215
  ## Contributing
data/exe/neri CHANGED
@@ -1,7 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
2
 
4
3
  require "neri"
5
4
  load "neri/build.rb"
6
5
 
7
- Neri.run()
6
+ NeriBuild.run