nsis - 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 这样的排列,但不确定我的错误。希望这是一个简单的错误,并会在某个时候帮助同一条船上的其他人。
解决方案
如果没有更多信息,我猜这是一台 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
推荐阅读
- wpf - WPF。GeometryDrawing 的画笔总是只有透明的
- visual-studio-code - 我必须更改哪些设置才能使 Visual Studio Code 自动运行正确目录中的文件?
- css - 如何根据屏幕大小加载不同的 css 文件 - 仍然缺少好的答案
- python - 为什么我上传到 TestPyPi 并成功安装的包会出现导入错误?
- python-3.x - Python给出导入错误
- typescript - Webpack 源映射:在 Firefox 中可用,在 Chrome 中缺失
- ios - 错误:当我尝试单击 TableView 单元格时,无法识别的选择器发送到实例
- perl - Perl如何将文件夹中带有空格的文件路径传递给反引号
- c# - 为什么 Input.GetMouseButtonDown 不能让我拍摄?
- python - 在Python中绘制选定网格区域外边缘的方法