batch-file - INNO 设置 - CMD .bat 问题(PrivilegesRequired=admin,在代码部分,直接在 cmd 中工作)
问题描述
我有一个特殊的问题,并且已经用尽了我能找到的关于这个问题的所有线程。
请参阅下面的更新
我正在尝试通过 Exec() 函数在 INNO 安装程序的代码部分中运行 bat 文件。bat 接受一个包含双引号的参数,然后启动一个 java 程序(传递参数)。通过 INNO Exec(),bat 无法启动 java 程序。但是,如果我打开 cmd 并自己运行命令,它会成功启动。
创新代码:
[Setup]
AppName=blah
AppVersion=1.0
AppPublisher=blah
AppPublisherURL=www.blah.com
DefaultDirName={pf}\blah
DefaultGroupName=blah
AllowNoIcons=no
OutputBaseFilename=blah
SolidCompression=yes
Compression=lzma
ArchitecturesInstallIn64BitMode=x64
ArchitecturesAllowed=x64
AlwaysRestart=no
PrivilegesRequired=admin
[Dirs]
Name: "{app}";
[Files]
Source: "..\dummy3.txt";DestDir: "{app}"; Flags: ignoreversion 64bit deleteafterinstall; BeforeInstall: InstallExt();
[Code]
{ Install SPSS Extensions from SPEs }
procedure InstallExt();
var
ResultCode: integer;
begin
if not Exec('"C:\Program Files\IBM\SPSS\Statistics\25\installextbundles.bat"', '–download no –source "C:\Program Files\blah"', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then
begin
MsgBox('Could not install OLSPS Extensions: ' + IntToStr(ResultCode) ,mbError, mb_Ok);
end;
end;
我想 INNO 正在以某种方式更改传递给 bat / cmd 的参数。有任何想法吗?
~~~~~~~ 更新~~~~~~
正如下面评论中的建议(参考:调试从 Inno Setup 安装程序执行的非工作批处理文件或命令),我运行它以便 cmd 保持打开状态并注释掉 bat 文件中的 ECHO。
[Run]
Filename: C:\Windows\SysWOW64\cmd.exe; Parameters: '/K "C:\Program files\IBM\SPSS\Statistics\25\installextbundlesdebug.bat" –download no –source "C:\Program files\blah"'
我还通过 CMD 使用 ECHO 手动运行它以比较两者。
"C:\Program files\IBM\SPSS\Statistics\25\installextbundlesdebug.bat" –download no –source "C:\Program files\blah"
结果:通过对 bat 文件进行细微调整,无论是通过手动 cmd 还是 exec(),我都得到了相同的输出,但通过 cmd 成功启动了外部 java 程序,但通过 INNO 失败。完全相同的回显输出。
解决方案
好的,所以它与 INNO exec() 破坏无关,因为我可以通过 cmd 手动运行 bat 文件并让它回显与通过 INNO exec() 回显完全相同的输出。因此,它必须以某种方式(尽管有管理员权限)与权限或 bat/java 本身有关。
推荐阅读
- firebase - Flutter & Firebase:如何在我刚创建文档时将 documentID 放入文档字段?
- bash - 阅读以逗号分隔的每个单词
- javascript - 在 Material UI Chip 中对齐头像中心
- java - 在 Java 中使用字符数组执行数学运算的最有效方法是什么?
- react-native - 如何在 TensorflowJs 中将张量解码为 base64?
- node.js - 将标头发送到客户端后无法设置标头 - Node/Express/JWT
- celery - 芹菜守护进程问题
- php - 如何计算具有左连接和多个 where 条件的匹配行
- qt - 如何重置 Qt 窗口字体的大小?
- javascript - 为什么复选框值在未选中时打开