Recent changes

2013-04-14 2013-04-02 2013-02-17 2013-01-29 2013-01-20 2013-01-18 2012-12-08 2012-11-06 2012-09-04 2012-08-02

NSIS/Reference



Reference

NSISで使われる関数とかについて

SetOverwrite

ファイルをコピーするときに既存のファイルを上書きするかどうかを指定する。以下のように指定する。

File hoge.php
SetOverwrite off
File program.cfg # config file we don't want to overwrite
SetOverwrite on
File huga.php

この場合、hoge.phpとhuga.phpはインストール時強制的に上書きされるが、program.cfgはすでにファイルが存在する場合、上書きされない。(設定値などが記述されている場合に一時的にoffにするなど)

引数
  • on(初期値)
  • off
  • try
  • ifnewer
  • ifdiff
  • lastused

RMDir

ディレクトリを削除する。削除するディレクトリは空でなければいけない。SetOutPathによって指定することができるカレントディレクトリは削除することができない。

引数
/r:

ディレクトリを再帰的に削除する。指定されたディレクトリの中にあるファイルとディレクトリは全て削除される。 If /r is specified, the directory will be removed recursively, so all directories and files in the specified directory will be removed.

/REBOOTOK:

ファイルとディレクトリが再起動時に削除される。削除に成功したらreboot flagがsetされる。error flagがsetされた場合削除されない。 If /REBOOTOK is specified, any file or directory which could not have been removed during the process will be removed on reboot -- if any file or directory will be removed on a reboot, the reboot flag will be set. The error flag is set if any file or directory cannot be removed.

StrCpy

StrCpy $A "b"

値をコピーする。上の場合、$Aにbをコピーする。

StrCmp

2つの値の比較を行なう。比較対象が同じか、そうでない場合、指定したラベルにジャンプする。

StrCmp 比較対象1 比較対象2 同じだったときの飛び先 [同じじゃなかったときの飛び先]

条件書くには必須なのでおぼえること。

Function

関数の定義を行なうことができる。関数は

Function 関数名
    処理の内容
FunctionEnd

みたいな感じで定義する。

Exec

<blockquote> Execute the specified program and continue immediately. Note that the file specified must exist on the target system, not the compiling system. $OUTDIR is used for the working directory. The error flag is set if the process could not be launched. Note, if the command could have spaces, you should put it in quotes to delimit it from parameters. e.g.: Exec '"$INSTDIRcommand.exe" parameters'. If you don't put it in quotes it will not work on Windows 9x with or without parameters. </blockquote>

指定されたプログラムを実行します。指定するファイルは対照のシステムに存在しなければなりません。コンパイルされていないシステムにおいてはワーキングディレクトリに$OUTDIRを使って下さい。 プロセスが起動しない場合エラーフラグをたてる。 もしコマンドにスペースが含まれている場合、以下のようにしてください。

Exec '"$INSTDIRcommand.exe" parameters'.

そうしないとWin9xとかじゃ動きませんよ

Comment

  • halt 記法とか微妙に修正した