-
Notifications
You must be signed in to change notification settings - Fork 0
/
wrapexec.txt
628 lines (487 loc) · 21.4 KB
/
wrapexec.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
--------------------------------------------------------------------------------
実行ファイルのラッパー「wrapexec」
by おぱ (opa)
--------------------------------------------------------------------------------
・概要
wrapexecは、他のプログラムを単に実行するだけのプログラムです。
どのプログラムをどのように実行するかを、設定ファイルにより定義
できます。
・このプログラムが役に立つケースの例
1)
CUIに慣れている人は、Program Files 以下にインストールされたエディタや
ツール類を、コマンドラインから実行したいと思うことが多々あると思い
ます。ところが Program Files 以下には通常、PATHは通っていません。
そもそも Program Files 以下は通常、ソフトウェアごとにディレクトリが
切られますので、それらひとつひとつにPATHを通していては大変なことに
なってしまいます。
このようなとき、どこかパスの通ったディレクトリに warpexec.exe を
(word.exe でも access.exe でも適当な名前で)コピーして、そこから
Program Files 以下の本物のプログラムを実行するようにすることで、
そのプログラムを直接実行するかのようなことができるようになります。
2)
Perl で有用なツールを作ったとします。仮に、useful_script.plと
いう名前をつけたとしましょう。さて、これを実行しようとするたびに、
毎回「perl useful_script.pl 云々・・・」と打つのは面倒です。
通常のコマンドのように「useful_script 云々・・・」で実行したい。
UNIXであれば、シェバング行をつけてx属性をつけるだけの話ですが、
これがWindowsだとなかなかうまくいきません。
スクリプトをプログラムのように扱う手法として、スクリプトの冒頭に
特別な記述を挿入し、バッチファイルにしてしまうという方法も
ありますが、しかしこの場合、要するにバッチファイルですから、
それを他のバッチファイルから呼ぶときは、バッチファイルであることを
意識して、「call useful_script」などと記述する必要があります。
さもないと、呼び出し元のバッチファイルに戻ってきてくれません。
(信じられないかもしれませんが、MS-DOSやWindowsは昔からそうなのです)
そこで、wrapexec.exe を useful_script.exe という名前でコピーして
設定ファイルを記述してやると、単に「useful_script 云々・・・」と打つ
だけでスクリプトを実行することができます。wrapexec自体はexeファイル
ですので、バッチファイルから実行された場合でも、呼び出し元の
バッチファイルに制御が戻ります。
(この目的のためには拙作 winshebang の方が便利かもしれません)
3)
実行したいプログラムが、/bin にあるのか、/usr/bin にあるのか、それとも
/usr/local/bin はたまた /opt/theSoftware/bin にあるのか といった
問題は Windows では比較的発生しにくいのですが(なぜなら、それらのいずれ
でもなく、/Program Filesや/Windowsにあるから)、それでも環境や運用方法
によっては、実行したいプログラムの実体がどこにあるのかが特定できない
場合があります。例えば、実行するマシンによって、perl.exe や cc.exe の
場所が異なる現場など。
wrapexec は、実行するプログラムの候補を複数指定できますので、
考えられる場所をあらかじめ列挙しておくことで、それらのうちのどこかに
あればそれを実行するということができます。
4)
あるプログラムを実行するとき、必ずそれに先立って初期化処理を行いたい
というケースがあるかと思います。例えば、常に同じ設定で起動するために、
プログラム実行前にレジストリをクリアしておきたい など。
wrapexec は、複数のプログラムを実行できます。本体のプログラムを実行
する前に、任意のバッチファイルやスクリプトを実行して、思う存分
お膳立てをすることができます。
このように、かように単純なプログラムでも、ことWindowsでCMD.EXEを
使っている場合はけっこう役に立ちます。
・用途
exeファイルに対するラッパとして使えます。他の場所にあるexeファイルを
同じオプションで実行したり、または追加のオプションを与えたり、
そのexeのあるディレクトリにchdirしたうえで実行したりといったことが
できます。
また、GUIアプリケーションについては、最小化/最大化するよう指示を
与えたうえで起動することもできます。
batファイルに対するラッパとして使えます。バッチファイルを他のバッチ
ファイルから実行する場合、「call バッチファイル名」としないと、
呼び出し先のバッチファイルが終了したときに、呼び出し元のバッチ
ファイルに制御が戻らず、バッチファイルの処理がそこで終了して
しまいますが、このプログラムを介してバッチファイルを実行すれば、
call をつける必要がなくなります。
また、callで呼び出されたバッチファイル内では、環境変数を操作したり、
カレントディレクトリを変更したりすると、呼び出し元のバッチファイルの
側にもその影響が及んでしまいますが、このプログラムを介してバッチ
ファイルを実行した場合、別のcmd.exeの下でバッチファイルが実行
されますので、そのような副作用はありません。
(逆に、そのような副作用を前提としたバッチファイルは、本プログラムを
介して実行すると、意図されたようには動作しません)
その他のスクリプトに対するラッパとして使えます。スクリプト名と同じ
名前で本プログラムをコピーして、対象のスクリプト言語のインタプリタを
実行し、その引数には、実行したいスクリプト名を与えるよう設定します。
これにより、あたかもスクリプト自体に実行属性を与えたかのように、
実行することができます。
Perl や Ruby などのインタプリタによっては、「ファイル冒頭の特定の記述
までを読み飛ばす」という機能があるものがあります。一方、本プログラムは、
「ファイルの特定の記述([end])以降を読み飛ばす」という機能があります。
これを組み合わせると、本プログラムの設定ファイルと、スクリプト本体を、
ひとつのファイルに記述することもできます。
これらの結果として、コマンドプロンプトがCUIのランチャになります。
パスの通ったディレクトリに、よく使うアプリケーションをそれぞれラップ
した本プログラムを入れておけば、プログラム名をタイプするだけで
実体はそれぞれどこか別のところにあるプログラムを一発で実行することが
できます。スタートメニューや Program Files の中を探し回ったり、
ネットワークのドライブ文字を慌てて調べたりする必要がなくなります。
・動作環境
WindowsNT 4.0以降 (2000/XP/Vista/7等)
動作確認は主にWindowsXP上で行っています。
・使用法
本プログラムは、提供時は wrapexec.exe というファイル名ですが、実際に
使用する際は、別の名前にコピーされることを想定しています。
名前はなんでもよいですが、通常は、実行したい(ラップしたい)プログラムと
同じ名前でコピーするのがよいかと思います。
次にその設定ファイルを作成します(書法は後述)。コピーした本プログラムと
同じディレクトリの、同じ名前で拡張子を .ini に置き換えたファイルが、
設定ファイルとして使われます。
あとはそのコピーした本プログラムを実行すれば、設定ファイルに従って
目的のプログラムが実行されます。
・設定ファイル(.ini)
実行ファイルの拡張子を .ini に置き変えたファイルを設定ファイルとして
読み込みます。
このファイルは、UTF-8で記述する必要があります。
書式は Windows でよくある、INIファイルに似たものです。
[section] でセクションを宣言し、それ以降にその内容を記述します。
キーワードの大文字小文字は区別されません。
いくつかの箇所では、${変数名}の形式で、マクロを使用できます。(後述)
行頭および行末のスペースは無視されます。
'#' または ';' または '@' で始まる行はコメントです。
行の途中の '#' ';' '@' はコメントの開始文字としては扱われません。
例
|
|# この行はコメントです。
| ; 行頭のスペースは無視されるので、この行もコメントです。
|gui = true # これはコメントとは解釈されません。
|
使用可能なセクションは以下の通りです。
[option] セクション
このセクションでは、プログラムを実行するときの様々な動作を、
キーワード=値 の書式で記述します。「=値」は省略することもできます。
ここで記述した内容は、次に現れる [exec] セクションに働きます。
使用可能なキーワードとその意味については後述します。
[exec] セクション
実行したいプログラム(またはそのいくつかの候補)を記述します。
マクロ(${MY_DIR}等)を使用できます。
複数個、記述することができます。記述された順にファイルの存在チェック
を行って、最初に見つかったものを実行します。
パス名や拡張子を省略した場合、環境変数 PATH および PATHEXT を
それぞれ参照して検索を行います。この検索においては、Windowsの通常の
動きとは異なり、最初にカレントディレクトリを探すことは行いません。
また、自分自身を見つけても、無視して次を探します。
[global] セクション
上記の [option] [exec] セクションの組は、ひとつの設定ファイルの中に
複数個記述することができます。[option] セクションで記述した内容は、
その [option] [exec] セクションの組についてだけ有効なので、複数の
[option] [exec] セクションの組に共通で与えたいオプションがあるときは、
この [global] セクションで記述することで、それ以降の全ての [option]
セクションでそれぞれ指定したのと同じことになります。
[end] セクション
ここで設定ファイルの読み込みを終え、これより後に何が書かれていても
無視します。
・オプション
オプションには、引数に真偽値をとるものと、文字列をとるものとがあります。
真偽値をとるオプションの場合、"true" "yes" "on" が真、"false" "no"
"off" が偽と解釈されます。また、引数を与えなかった場合は、真として
扱われます。
文字列をとるオプションの場合、"=" 以降がそのまま引数として解釈され
ます。また、引数を与えなかった場合は、空文字列として扱われます。
例
|
|[option]
|wait (真)
|verbose=off (偽)
|chdir=C:\work ("C:\work" という文字列)
|
[option] および [global] セクションで使用可能なオプションは、
以下の通りです。
help
特殊なオプションです。このオプションを指定すると、簡単なヘルプを
表示して終了します。
本プログラムの性質上、コマンドラインから "--help" などとしても、本プロ
グラムがヘルプを表示するようなことはなく、それはそのまま本プログラム
から実行されるプログラムに渡されます。
arg (初期値:"${ARG}")
引数に文字列をとります。本プログラムから実行されるプログラムに
引数をどのように渡すかを指定します。デフォルトは "${ARG}" で、これは
本プログラムに渡された引数をそのまま渡すことを意味します。
マクロ(${ARG}等)を使用できます。
chdir (初期値:"")
引数に文字列をとります。プログラムを実行する際に、このオプションで
指定したディレクトリに移動します。
UNCパス(\\server\share等)も指定できますが、UNCパスに直接 chdir する
ことはできませんので、一時的に空いているドライブ文字を割り当てた上で、
そこに chdir します。
マクロ(${MY_DIR}等)を使用できます。
export_env (初期値:定義なし)
引数に文字列をとります。このオプションを使うと、後述のマクロの値を
環境変数に設定した上で、プログラムを実行できます。環境変数は、マクロの
名前の頭に "WRAPEXEC_" をつけた名前になります。
例えば、マクロ ${ARG} をエクスポートするには export_env=ARG と
指定します。すると本プログラムへ渡された引数が環境変数 WRAPEXEC_ARG
に設定されてプログラムが実行されます。
このオプションは複数個指定できます。
verbose (初期値:false)
引数に真偽値をとります。値が真の場合、内部処理の状況と状態を逐一
表示します。設定ファイルの動作確認の際に使用すると役立つことが
あります。
wait (初期値:wrapexec.exeの場合true wrapexecw.exeの場合false)
引数に真偽値をとります。値が真の場合、本プログラムから実行された
プログラムが終了するまで待機します。またそのプロセスの終了コードを
本プログラムの終了コードとします。
値が偽の場合、本プログラムはすぐ終了し、その際の終了コードは
(他にエラーが発生していなければ)0になります。
maximize (初期値:false)
引数に真偽値をとります。値が真の場合、ウィンドウを最大化して起動する
よう、実行されるプログラムに指示します。但し、実際に最大化した
ウィンドウが開くかどうかは、実行されるプログラムによります。
これを指定すると、minimize が false になります。
minimize (初期値:false)
引数に真偽値をとります。値が真の場合、ウィンドウを最小化して起動する
よう、実行されるプログラムに指示します。
これを指定すると、maximize が false になります。
hide (初期値:false)
引数に真偽値をとります。値が真の場合、ウィンドウを表示せずに
起動するよう、実行されるプログラムに指示します。
非表示で起動されたコンソールアプリケーションが入力待ちになったり
しても、何も表示されないのでそのことが判りませんので注意して
ください。
import_env
このオプションは廃止されました。使用すると警告を表示するだけです。
internal
このオプションは廃止されました。使用すると警告を表示するだけです。
内部コマンドを実行するには、実行するプログラムに cmd.exe を指定して
その引数として内部コマンドを与えてください。
gui
このオプションは廃止されました。使用すると警告を表示するだけです。
use_path
このオプションは廃止されました。使用すると警告を表示するだけです。
PATH および PATHEXT による検索を行うかどうかは、実行したいプログラム
名がフルパス指定されているか・拡張子が明示されているか によって
自動で判定するようにしました。
・マクロ
設定ファイル中のいくつかの場所では、${名称} の形式で、マクロ展開を
使用することができます。
「${」という文字列そのものを表すには、「$${」と記述します。
「${名称}」の他、「$(名称)」「$[名称]」の書式も使用できますが、
「$名称」の書式は使用できません。必ず括弧で括る必要があります。
マクロ展開は一度だけ行われ、展開された文字列が再びマクロ展開される
ことはありません。
標準で使用できるマクロは以下の通りです。
ARG
本プログラムに与えられたコマンドライン引数。(プログラム名以降の部分)
プログラム名と引数の間のスペースも含まれることに注意して下さい。
例えば、"wrapexec.exe FooBarBaz" として実行した場合、${ARG} は
" FooBarBaz" に展開されます。
コマンドラインで与えられた、スペースの個数や特殊記号、UNICODE文字等も
そのまま忠実に再現して同じものが展開されます。
CLIPBOARD
プログラム実行時のクリップボードの値。
クリップボードの内容がテキスト以外だった場合は、空文字列となります。
改行やタブ文字などのホワイトスペース文字は、スペースに置換されます。
MY_EXENAME
自分自身 (wrapexec.exe) のフルパスファイル名。
例 : D:\somewhere\wrapexec.exe
MY_ININAME
設定ファイルのフルパスファイル名。
例 : D:\somewhere\wrapexec.ini
MY_BASENAME
自分自身 (wrapexec.exe) のベース名(ドライブ名、パス名、拡張子を除いた
名前)。
例 : wrapexec
MY_DIR (別名 : MY)
自分自身 (wrapexec.exe) のパス名。(ドライブ名および末尾の'\'を含む)
例 : D:\somewhere\
MY_DRIVE
自分自身 (wrapexec.exe) のあるドライブ名。
例 : D:
SYS_NAME
コンピュータ名。
例 : SOMEONESPC
SYS_ROOT
システムのルートディレクトリ。
例 : C:\WINDOWS\
SYS_DIR (別名 : SYS, SYS32_DIR)
システムディレクトリ。
本プログラムは32bitアプリケーションなので、64bit環境で実行された
場合、#{SYS_DIR} の値が例えば C:\WINDOWS\system だったとしても
実際にはWOW64のシステムディレクトリ(例えばC:\WINDOWS\sysWOW64)が
見えることになります。
例 : C:\WINDOWS\system32\
SYS64_DIR
64bitシステムの場合、64bitサブシステムのシステムディレクトリ。
32bitシステムの場合、${SYS_DIR}と同じ。
本プログラムは32bitアプリケーションなので、64bit環境で実行された
場合、#{SYS_DIR}の値が例えば C:\WINDOWS\system だったとしても
実際にはWOW64のシステムディレクトリ(例えばC:\WINDOWS\sysWOW64)が
見えますが、そのような場合でも64ビットのシステムディレクトリに
アクセスしたい場合に使用します。
例 : C:\WINDOWS\sysnative\
SYS_DRIVE
システムドライブ。
例 : C:
USER_NAME
ユーザ名。
例 : someone
USER_DIR (別名 : USER)
ユーザのプロファイルのディレクトリ。
例 : C:\Documents and Settings\someone\
USER_DRIVE
ユーザのプロファイルのあるドライブ。
例 : C:
USER_DOC
ユーザのマイドキュメントのディレクトリ。
例 : C:\Documents and Settings\someone\My Documents\
USER_DESKTOP
ユーザのデスクトップのディレクトリ。
例 : C:\Documents and Settings\someone\デスクトップ\
ALL_USER_DIR (別名 : ALL_USER)
共通のプロファイルのディレクトリ。
例 : C:\Documents and Settings\All Users\
ALL_USER_DRIVE
共通のプロファイルのあるドライブ。
例 : C:
ALL_USER_DOC
共有ドキュメントのディレクトリ。
例 : C:\Documents and Settings\All Users\Documents\
ALL_USER_DESKTOP
共通のデスクトップのディレクトリ。
例 : C:\Documents and Settings\All Users\デスクトップ\
PROGRAM_DIR (別名 : PROGRAM, PROGRAM32_DIR)
プログラムフォルダのディレクトリ。
本プログラムは32bitアプリケーションなので、64bit環境で実行された
場合、32bitプログラム用のプログラムフォルダを表します。
(C:\Program Files(x86)\ 等)
例 : C:\Program Files\
PROGRAM64_DIR
64bitシステムの場合、64bitプログラム用のプログラムフォルダ。
32bitシステムの場合、${PROGRAM_DIR}と同じ。
例 : C:\Program Files\
PROGRAM_DRIVE
プログラムフォルダのあるドライブ。
例 : C:
TMP_DIR (別名 : TMP)
テンポラリディレクトリ。
例 : C:\DOCUME~1\SOMEONE\LOCALS~1\Temp\
TMP_DRIVE
テンポラリディレクトリのあるドライブ。
例 : C:
TARGET_NAME
本プログラムから実行されるプログラムのフルパスファイル名。
例 : C:\usr\local\bin\less.exe
TARGET_DIR (別名 : TARGET)
本プログラムから実行されるプログラムのあるディレクトリ。
例 : C:\usr\local\bin\
TARGET_DRIVE
本プログラムから実行されるプログラムのあるドライブ。
例 : C:
CURRENT_DIR (別名 : CURRENT)
本プログラムが実行された時点でのカレントディレクトリ。
例 : D:\home\user1\
CURRENT_DRIVE
本プログラムが実行された時点でのカレントドライブ。
例 : D:
上記の他、環境変数をマクロ展開に使用することができます。
${COMSPEC} など。
個々の環境での具体的な値は、オプション verbose を真と設定すると
確認することができます。
・設定ファイル記述例
Perlスクリプト theScript.pl を実行する例
|
|[option]
|arg = -- "${MY_DIR}theScript.pl"${ARG}
|[exec]
|perl
|
設定ファイルの後半に書かれた Rubyスクリプトを実行する例
|
|[option]
|arg = -x -- "${MY_ININAME}"${ARG}
|[exec]
|ruby
|[end]
|#! /usr/bin/ruby
|p "Hello World!"
|
Program Files の奥底にある MyFavoriteEditor.exe を最大化状態で実行する例
|
|[option]
|maximize
|[exec]
|${PROGRAM}folder\to\program\MyFavoriteEditor.exe
|
どこかにある nomad.exe を実行する例
|
|[exec]
|${SYS}nomad.exe
|${PROGRAM}nomad\nomad.exe
|c:\somewhere\nomad.exe
|c:\anotherwhere\nomad.exe
|\\server\shere\nomad.exe
|
レジストリをクリアしてから 目的のプログラムを実行する例
|
|[option]
|arg=/s "${MY_DIR}initialize.reg"
|[exec]
|${SYS_ROOT}regedit
|[exec]
|target.exe
|
名前順でソートする dir コマンドの例
|
|[option]
|arg=/c dir /on${ARG}
|[exec]
|${COMSPEC}
|
・使用上の注意
本プログラムはなるべく意図した通りに動作するよう心がけて作成していま
すが、設定ファイルの誤りやその他の原因で、意図せぬプログラムを意図せぬ
オプションで実行してしまうことが、絶対にないとはいえません。必ず充分な
動作確認を行ったうえで使用してください。
本プログラムはその目的上、設定ファイルを書き換えることにより多様な動作
をさせられるため、その取り扱いには注意して下さい。万一、悪意ある第三者に
設定ファイルを改竄された場合の影響は計り知れません。
(但し、そのような悪意ある第三者が設定ファイルを改竄できる状況では、
本プログラムの有無にかかわらず第三者は攻撃可能であると考えられます)
・欠点
普通にプログラムを実行するより、ややメモリを多く消費します。
本プログラム および適宜実行される cmd.exe が、それぞれメモリを消費
するためです。
・既知のバグおよび今後の課題
・特になし
・謝辞
記載の社名、製品名は各社の商標または登録商標です。
このプログラムは、Borland C++ でコンパイルされています。
このプログラムは、UPX で圧縮されています。
・サポート
このプログラムの公式webページは
http://sourceforge.jp/projects/wrapexec/ です。
ダウンロードは
http://sourceforge.jp/projects/wrapexec/releases/ から行えます。
サポートは SourceForge.JP 内のフォーラム
http://sourceforge.jp/projects/wrapexec/forums/ で行います。
・著作権表示およびライセンス
Copyright (c) 2009,2011 by opa
All rights reserved.
ソースコード形式かバイナリ形式か、変更するかしないかを問わず、以下の
条件を満たす場合に限り、再頒布および使用が許可されます。
・ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、および
下記免責条項を含めること。
・バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の資料に、
上記の著作権表示、本条件一覧、および下記免責条項を含めること。
・書面による特別の許可なしに、本ソフトウェアから派生した製品の宣伝
または販売促進に、作者(おぱ)または貢献者の名前を使用しないこと。
本ソフトウェアは、著作権者および貢献者によって「現状のまま」提供されて
おり、明示黙示を問わず、商業的な使用可能性、および特定の目的に対する
適合性に関する暗黙の保証も含め、またそれに限定されない、いかなる保証も
ありません。著作権者も貢献者も、事由の如何を問わず、また損害発生の
原因如何を問わず、かつ責任の根拠が契約であるか厳格責任であるか
(過失その他の)不法行為であるかを問わず、仮にそのような損害が発生する
可能性を知らされていたとしても、本ソフトウェアの使用によって発生した
(代替品または代用サービスの調達、使用の喪失、データの喪失、利益の喪失、
業務の中断も含め、またそれに限定されない)直接損害、間接損害、偶発的な
損害、特別損害、懲罰的損害、または結果損害について、一切責任を負わない
ものとします。
・変更履歴
・新規作成。(2009/05/27 version 1.00)
・内部で使用するコンテナをvector<>主体からlist<>主体に変更。
・バイナリサイズの削減を試みた。
・いくつかの処理の効率化と高速化。
・行頭の @ もコメント開始文字として扱うようにした。
・セクション [eof] を [end] に変更。
・GUIプログラム版の wrapexecw.exe を同梱するようにした。
・オプション hide 追加。
・オプション use_path 追加。(2010/03/10 version 1.01)
・誤って、主処理をコメントアウトしてしまっていたのを修正。
(2010/03/11 version 1.02)
・マクロの展開結果を予め全種類用意するのではなく、必要なもののみ都度
展開するようにした。これにより高速化しました。
・SHGetSpecialFolderLocation() ではなく SHGetSpecialFolderPath() を
使うようにした。
・オプション import_env で明示的に環境変数を取り込まなくともよい
ようにした。併せてこのオプションを廃止した。
・オプション hide を廃止。
・起動時にSTARTUPINFOを取得して、例えば最小化オプションつきで起動
されたときは、ターゲットを最小化オプションつきで起動するようにした。
・mingw32サポートを止めた。
・wrapexecwにおいては標準出力が使用できないので、メッセージボックスで
表示を行うようにした。
・マクロ TARGET_*族および CURRENT_*族を追加。
・アイコンの微調整および変更。(2010/08/17 version 1.03)
・サンプルの記載を修正、統一。(2011/05/01)
--------
制作・著作
おぱ (opa)