2009-07-09 10 views
4

私は、NSISベースのインストーラを使用して、異なる条件でわずかに異なるバージョンを生成する必要があります。特定のファイルは、代替ブランドを使用することができ、ディスク上に存在する場合ファイルの存在に基づくNSISスクリプト条件のコンパイル

条件は、コンパイル時に確定するのは簡単です。私はmakensis.exeにコマンドラインオプションを使用してこの動作を提供できることは知っていますが、コンパイラがこれを世話することができれば良いでしょう。

は、コンパイル時に「IfExist」タイプのロジックを作る方法はありますか?

答えて

6
!macro CompileTimeIfFileExist path define 
!tempfile tmpinc 
!system 'IF EXIST "${path}" echo !define ${define} > "${tmpinc}"' 
!include "${tmpinc}" 
!delfile "${tmpinc}" 
!undef tmpinc 
!macroend 

Section 
!insertmacro CompileTimeIfFileExist "$%windir%\explorer.exe" itsThere 
!ifdef itsThere 
MessageBox mb_Topmost yes 
!else 
MessageBox mb_Topmost no 
!endif 
SectionEnd 

注:!のここで使用されるシステムコマンドは、Windows

+0

Windowsの使用制限は私にとっては受け入れられます。私は明日のスピンのためにあなたのコードをKyle'sとともに取るつもりです。ありがとう。 –

2

コンパイル時のファイル検出に関する一般的な質問には答えがありませんが、達成しようとしているように聞こえるのは解決策があります。

私のインストーラは、このようなものを使用:ファイルCustomBranding.nshで

:メインのインストーラスクリプトで

!define CUSTOM_BRANDING 
!define APPNAME "Brand X" 
!define LOGO "C:\Brand_X_Logo.png" 

!include /NONFATAL "CustomBranding.nsh" 
!ifndef CUSTOM_BRANDING 
    !define APPNAME "Generic" 
    !define LOGO "C:\Generic_Logo.png" 
!endif 

があることが、代替ブランディング」の一種であります"あなたは尋ねているのですか?

+0

まあ上でコンパイルされていると仮定し、私はあなたの仕組みを取る方法を見ることができますが、私の場合はブランディングが、製品ではなく、インストーラにされ、これを使って。私はあなたの解決策を試し、明日オフィスに戻ってくるときにアンダーの解答を見てみましょう。 –

関連する問題