如何创建一个适用于程序文件和程序文件(x86)的exe?

时间:2012-04-09 10:58:26

标签: batch-file nsis batch-processing

我正在尝试使用NSIS脚本创建一个exe文件,在我的脚本中我正在复制批处理文件和已安装的Jasper Server目录中的文件夹(可能是任何目录)

这是我的NSIS脚本 -

   * 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  *

在程序文件(x86)中安装jasper服务器时工作正常。 如何为程序文件和程序文件(x86)概括它。

1 个答案:

答案 0 :(得分:1)

这可能不是超级优雅,但您可以检查“Program Files(x86)”目录“C:\ PROGRA~2 \ JASPER~1.0 \ buildomatic”是否存在,并检查“C:\ PROGRA~1 \” JASPER~1.0 \ buildomatic“for”Program Files“。然后,您可以根据自己的需要进行单独分支处理。

在这里你可以找到:

http://nsis.sourceforge.net/IfFileExists_Changes_Section_Flags

我希望这对你有帮助。

编辑:您可能想尝试这样的事情(警告未经测试):

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