2012-04-09 14 views
0

私は私のスクリプトに私はバッチファイルと、既にインストールさジャスパーServerディレクトリ内のフォルダをコピーしています、NSISスクリプトを使用してexeファイルを作成しようとしていますがこれは私のNSISのscript-あるプログラムファイルとプログラムファイル(x86)の両方で動作するexeを作成するには?

(これは、任意のディレクトリにすることができます) -

* Section 
    SetOutPath "C:\PROGRA~2\JASPER~1.0\buildomatic" 

     File /r "C:\Users\Desktop\K-installer\backup3101" 
     File "C:\Users\Desktop\K-installer\batch\demo.bat" 
     ExecWait '"C:\PROGRA~2\JASPER~1.0\buildomatic\demo.bat"' 
    SectionEnd * 

ジャスパーサーバーがProgram Files(x86)にインストールされている場合に問題ありません。 プログラムファイルとプログラムファイル(x86)の両方で一般化するにはどうすればよいですか。

+3

が重複する可能性を(http://stackoverflow.com/questions/10071300/how-to-create-a-batch-file-which-work-for-both-program-files-and-program-filesx) – Helen

答えて

1

これは非常にエレガントではないかもしれませんが、 "Program Files(x86)"のディレクトリ "C:\ PROGRA〜2 \ JASPER〜1.0 \ buildomatic"が存在するかどうかを確認し、 "C:\ PROGRA〜1 \ JASPER〜1.0 \ buildomatic "を" Program Files "に置き換えます。その後、個々の分岐を行い、必要に応じてすべてを処理することができます。ここで

あなたはどのように見つける:私はこれがあなたを助けている願っています

http://nsis.sourceforge.net/IfFileExists_Changes_Section_Flags

編集:あなたはこの(テストしていない警告)のような何かしようとする場合があります:[?プログラムファイルとプログラムファイル(x86の)両方のために働くのバッチファイルを作成する方法]の

Section /o "Program Files(x86)" prg2 
    SetOutPath "C:\PROGRA~2\JASPER~1.0\buildomatic" 
    File /r "C:\Users\Desktop\K-installer\backup3101" 
    File "C:\Users\Desktop\K-installer\batch\demo.bat" 
    ExecWait '"C:\PROGRA~2\JASPER~1.0\buildomatic\demo.bat"' 
SectionEnd 

Section /o "Program Files)" prg1 
    SetOutPath "C:\PROGRA~1\JASPER~1.0\buildomatic" 
    File /r "C:\Users\Desktop\K-installer\backup3101" 
    File "C:\Users\Desktop\K-installer\batch\demo.bat" 
    ExecWait '"C:\PROGRA~1\JASPER~1.0\buildomatic\demo.bat"' 
SectionEnd 

Function .onInit 
IfFileExists C:\PROGRA~1\JASPER~1.0\buildomatic Prog1Exists PastProg1Exists 
Prog1Exists: 
    ; Use the macro from sections.nsh 
    !insertmacro SelectSection ${prg1} 
PastProg1Exists: 

IfFileExists C:\PROGRA~2\JASPER~1.0\buildomatic Prog2Exists PastProg2Exists 
Prog2Exists: 
    ; Use the macro declared above 
    !insertmacro SelectSection ${prg2} 
PastProg2Exists: 

FunctionEnd 
+0

Function .onInitを変更することはできますかすでに存在しているので名前? – Sharad

+0

例として、 "Function .onInit"の名前を "Function Hello"に変更してから、 "Call Hello"という別の場所から呼び出すことができます。あなたはそれについてもっと読むことができます:http://nsis.sourceforge.net/Macro_vs_Function – HardCoder

+0

xxx〜#をチェックしないでください。プログラムファイルではないかもしれません。 – Anders

関連する問題