0

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

这是我的 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  *

当 jasper 服务器安装在 Program Files(x86) 中时,它工作正常。我如何将它概括为 Program Files 和 Program Files(x86)。

4

1 回答 1

1

这可能不是很优雅,但您可以检查“Program Files(x86)”的目录“C:\PROGRA~2\JASPER~1.0\buildomatic”是否存在,并检查“C:\PROGRA~1\JASPER~1.0”是否存在\buildomatic” 表示“程序文件”。然后,您可以在那里进行单独的分支并根据您的需要处理所有事情。

在这里您可以找到方法:

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
于 2012-04-09T11:09:21.803 回答