NSIS安装程序运行批处理文件

时间:2020-10-30 21:45:52

标签: nsis

在安装结束时尝试运行批处理文件,除此文件无法运行外,一切工作正常。

using namespace std;

一切都存储在正确的位置,使用绝对路径进行调用。我一开始就要求管理员特权,

Header.h

只需从示例NSIS安装程序进行复制即可提供here

文件在那里,所以我必须在文件路径上出错或缺少一些参数。尝试过很多类似nsExec的排列,但不确定我的错误。希望这是一个简单的错误,并且会在某些时候帮助同一条船上的其他人。

2 个答案:

答案 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)

我认为您应该给我们更多信息来解决这个问题。

根据当前信息,我认为有两个原因:

  1. “ C:\ Program Files”是64位程序的路径,但是NSIS安装程序是32位程序,因此此路径将重定向到“ C:\ Program Files(x86)”。您可以使用Anders的解决方案来解决它。

  2. 您的批处理文件可能包含相对路径。当您从NSIS安装程序运行批处理文件时,您的工作目录与批处理文件不同。因此,某些命令无法正确运行。您可以使用%〜dp0来解决它。