1

NSIS インストーラーをカスタマイズしようとしています。ユーザーからのオプションに基づいて、コマンド ライン オプションで設定する別のオプションでプログラムを実行したいと考えています。

(最後に削除するいくつかのファイルを保存します。ユーザーがインストールを続行したくない場合は、一時ファイルのみを削除するオプション -d を使用してユーティリティを実行します。)

次の投稿を見つけました: NSIS でコマンド ライン引数にアクセスするが、コマンド ライン引数を使用してプログラムを実行するように設定する方法がわかりません。

これは私がしようとしているものです:私は試しました:

SetOutPath "$TEMP"
!define MY_FILE "file.exe -d"
File /nonfatal "${MY_FILE}"
ExecWait '"$TEMP\${MY_FILE}" 
Delete /REBOOTOK "$TEMP\${MY_FILE}"

見つからないという警告が表示されましたfile.exe -d

だから私は次のようなことを試みています

$(GetOptions) $CMDLINE "/d" $Trying_This
;Not sure what to put to get the program

私はまだ NSIS を試しています。これは大きな課題であり、参考になる例が見つかりません。

注: オプションなしでファイルを実行していますが、NSIS にオプション -d (または -f filename などの他のオプション) を挿入してもらいたいと考えています。

編集:投稿に不完全なコードがありました...実生活では ExecWait がありました...

4

2 に答える 2

2
Outfile test.exe
requestexecutionlevel user
InstallDir "$Temp\Test" ;Default $InstDir
!include FileFunc.nsh
!include LogicLib.nsh

page directory
page instfiles

section 
StrCpy $1 "/Foo"
ClearErrors
${GetOptions} $CMDLINE "-d" $0
${IfNot} ${Errors} 
    StrCpy $1 "/Bar"
${EndIF}
SetOutPath $InstDir
File "File.exe" ;Extracting to $InstDir
ExecWait '"$InstDir\File.exe" $1' ;Calling with /Foo or if installer was started with -d; /Bar 
sectionend
于 2012-06-25T17:13:02.253 に答える
1

このFileステートメントは、NSIS に指定されたファイルを圧縮データに含めさせ、実行時に現在の作業ディレクトリに配置します (これは で変更できますSetOutPath)。パラメータの有無にかかわらず、実行可能ファイルを実行することはできません。

インストール中に実行可能ファイルを実行する場合は、1) exe を含め、2) 実行時に実行する必要があります。たとえば、実行可能ファイルがインストーラーの場合は、一時ディレクトリに変更する可能性があります。

!define MY_FILE "file.exe"
!define MY_ARGS "-d"
SetOutPath "$TEMP" 
File "${MY_FILE}"
ExecWait '$TEMP\${MY_FILE} ${MY_ARGS}' $0   ;$0 will get the return code
${if} $0 <> 0
    MessageBox MB_OK|MB_ICONEXCLAMATION "Sorry, but the installation returned the code $0.$\n \
         Cannot continue the installation." /SD IDOK
    Abort
${endif}
Delete "$TEMP\${MY_FILE}"

もちろん、後でexeを保持する必要がある場合は、一時ディレクトリに移動したり、最後に実行可能ファイルを削除したりしないでください。

于 2012-06-25T16:59:08.483 に答える