2009-07-09 7 views
4

Ich habe ein NSIS-basiertes Installationsprogramm, das ich in der Lage sein muss, leicht verschiedene Versionen von unter verschiedenen Bedingungen zu generieren.NSIS Skript Bedingung Kompilierung basierend auf dem Vorhandensein einer Datei

Die Bedingungen sind zur Kompilierungszeit einfach festzulegen. Wenn eine bestimmte Datei auf der Festplatte vorhanden ist, kann das alternative Branding verwendet werden. Ich weiß, dass ich eine Befehlszeilenoption für die Datei makensis.exe verwenden könnte, um dieses Verhalten bereitzustellen, aber es wäre besser, wenn der Compiler das für mich erledigen könnte.

Gibt es eine Möglichkeit, eine Kompilierzeit "IfExist" Typ Logik zu machen?

Antwort

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 

Hinweis: das Systemkommando verwendet hier angenommen, dass Sie auf Windows kompilieren

+0

Die Einschränkung der Verwendung von Windows ist für mich akzeptabel. Ich werde morgen zusammen mit Kyle deinen Code für eine Runde nehmen. Vielen Dank. –

2

Ich habe keine Antwort auf Ihre allgemeine Frage der Kompilierzeit-Dateierkennung, aber ich habe eine Lösung für das, was es klingt wie Sie versuchen, zu erreichen.

Meine Installateure verwenden etwas wie folgt aus:

In der Datei CustomBranding.nsh:

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

Im Haupt Skript Installer:

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

Ist das die Art von „alternativen Branding "Sie fragen nach?

+0

Nun, das Branding in meinem Fall ist vielmehr auf das Produkt als das Installationsprogramm, obwohl ich kann sehen, wie Ihr Mechanismus zu nehmen und benutze es. Ich werde Ihre Lösung versuchen und Anders Lösung betrachten, wenn ich morgen im Büro bin. –

Verwandte Themen