在安装结束时尝试运行批处理文件,除此文件无法运行外,一切工作正常。
using namespace std;
一切都存储在正确的位置,使用绝对路径进行调用。我一开始就要求管理员特权,
Header.h
只需从示例NSIS安装程序进行复制即可提供here
文件在那里,所以我必须在文件路径上出错或缺少一些参数。尝试过很多类似nsExec的排列,但不确定我的错误。希望这是一个简单的错误,并且会在某些时候帮助同一条船上的其他人。
答案 0 :(得分:0)
没有更多信息,我想这是一台64位Windows计算机,文件系统重定向导致您的32位安装程序访问错误的程序文件目录。
您发布的代码也有问题,因为我们不知道$0
是什么。我认为您无法在扩展%comspec%的位置发布代码。要排除这种情况,请将$0
替换为$sysdir\cmd.exe
。
理想情况下,安装程序应将批处理文件解压缩到目标目录:
Section
SetOutPath $InstDir
File batch.bat
ExecWait '"$sysdir\cmd.exe" /C if 1==1 "$InstDir\batch.bat"'
SectionEnd
如果必须访问64位文件夹,则可以禁用重定向,但是不建议这样做:
!include x64.nsh
Section
${DisableX64FSRedirection}
ExecWait ... $ProgramFiles64\...
${EnableX64FSRedirection}
SectionEnd
答案 1 :(得分:0)
我认为您应该给我们更多信息来解决这个问题。
根据当前信息,我认为有两个原因:
“ C:\ Program Files”是64位程序的路径,但是NSIS安装程序是32位程序,因此此路径将重定向到“ C:\ Program Files(x86)”。您可以使用Anders的解决方案来解决它。
您的批处理文件可能包含相对路径。当您从NSIS安装程序运行批处理文件时,您的工作目录与批处理文件不同。因此,某些命令无法正确运行。您可以使用%〜dp0来解决它。