0

インストーラーをサイレントにしたいと思います。コマンド ライン オプションに応じて、インストーラーをサイレントにするかどうかを柔軟に設定したいと考えています。ドキュメントでは、これが NSIS スクリプトのコンパイルを開始することがわかりました。

"C:\Program Files\NSIS\makensis.exe" "D:\Produts\folder\Install\nsis\MyApp.nsi"

これは機能しています。デフォルトでは、これにより非サイレント インストーラーが生成されます。サイレントインストーラー(コマンドラインオプションのみ)を使用するために、これを試しました

"C:\Program Files\NSIS\makensis.exe" \S "D:\Produts\folder\Install\nsis\MyApp.nsi"

ただし、\S は認識されるオプションではありません。コマンド ライン オプションを使用してインストーラーをサイレントにするにはどうすればよいですか?

これはドキュメントで見つけることができます

4.8.1.36 サイレント インストール

normal|silent|silentlog インストーラーをサイレントにするかどうかを指定します。'silent' または 'silentlog' の場合、SF_SELECTED フラグを持つすべてのセクションがサイレント インストールされ (SectionSetFlags を使用してこのフラグを設定できます)、インストーラ自体からの画面出力はありません (スクリプトは必要なものを表示できます。 MessageBox の /SD を使用して、サイレント インストーラーの既定値を指定します)。これが 'normal' に設定されていて、ユーザーがコマンド ラインで /S (大文字と小文字を区別) を指定してインストーラを実行すると、SilentInstall 'silent' が使用されたかのように動作することに注意してください。注: LogSet も参照してください。

詳細については、セクション 4.12 を参照してください。

虐待されていると感じるように

または、コンパイルが /S オプションを受け入れるように、NSIS スクリプトに命令を追加する必要がありますか?

-S で試してみましたが、どちらも機能しませんでした。

感謝と敬意

4

2 に答える 2

6

/Sオプションは、ではなく、インストーラーで使用できますmakensis.exe。したがって、コマンドラインからサイレントモードでインストーラーを実行できます。 MyApp.exe /S

インストーラーを常にサイレントにするようにビルドする場合は、次の手法を使用できます。

.onInit関数内:

Function .onInit
  !ifdef IsSilent
    SetSilent silent
  !endif
FunctionEnd

次に、定数/Dを定義するオプションを使用してインストーラーをビルドします。IsSilent

makensis.exe /DIsSilent MyApp.nsi

つまり、/D上記のようなオプションを使用してビルドする場合、インストーラーは常にサイレントになります。オプションがない/D場合、インストーラーはデフォルトで非サイレントになりますが、コマンドラインから実行してMyApp.exe /Sサイレントにすることができます。

于 2012-11-19T10:28:56.007 に答える
0

コマンド ラインから NSI スクリプトをサイレント モードでコンパイルする場合、それはインストーラをサイレント モードで実行することとは異なります。

コンパイル バッチ スクリプトでは、以下を使用します。

c:\progra~1\nsis\makensis /V0 .\sample.nsi | findstr /b /r /c:"YouCantFindMe"

この/V#オプションはすべての出力を抑制しますが、コンパイラの起動時にリボン/バナーを含めます (NSIS コマンド ライン オプションのドキュメントを参照してください。「findstr」を介してすべての出力をパイプすると、その出力も抑制されます。

于 2013-02-27T19:58:20.063 に答える