首页 > 解决方案 > NSIS 安装程序运行批处理文件

问题描述

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

section "Startup"
    Exec '"$0" /C "C:\Program Files\placeholder\startup\startup.bat"'
sectionEnd

一切都存放在正确的位置,使用绝对路径来调用它。我一开始就要求管理员权限,

RequestExecutionLevel admin ;Require admin rights on NT6+ (When UAC is turned on)

只需从此处提供的示例 NSIS 安装程序复制

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

标签: nsis

解决方案


如果没有更多信息,我猜这是一台 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

推荐阅读