Batch file 如何创建同时适用于程序文件和程序文件(x86)的exe?

Batch file 如何创建同时适用于程序文件和程序文件(x86)的exe?,batch-file,nsis,batch-processing,Batch File,Nsis,Batch Processing,我正在尝试使用NSIS脚本创建一个exe文件,在我的脚本中,我正在复制一个批处理文件和已安装的Jasper服务器目录中的一个文件夹(可以是任何目录) 这是我的NSIS脚本-- 当jasper服务器安装在程序文件(x86)中时,这种方法可以正常工作。 如何将其推广到程序文件和程序文件(x86)。这可能不是非常优雅,但您可以检查“程序文件(x86)”是否存在目录“C:\PROGRA~2\JASPER~1.0\buildomatic”,以及“程序文件”是否存在目录“C:\PROGRA~1\JASPER

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

这是我的NSIS脚本--

当jasper服务器安装在程序文件(x86)中时,这种方法可以正常工作。
如何将其推广到程序文件和程序文件(x86)。

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

在这里,您可以找到如何:

我希望这对你有帮助

编辑:您可能希望尝试以下操作(警告未测试):


我们是否可以更改Function.onInit名称,因为它已经存在?例如,您可以将“Function.onInit”重命名为“Function Hello”,然后从其他地方使用“call Hello”调用它。你可以在这里了解更多:不要检查xxx~#,它可能不是程序文件,它可能是任何东西!
   * 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  *
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