我有一个特殊的问题,并且已经用尽了我能找到的关于这个问题的所有主题。
见下面的更新
我试图通过Exec()函数在INNO安装程序的代码部分运行bat文件。 bat接受包含双引号的参数,然后启动java程序(传递参数)。通过INNO Exec(),bat无法启动java程序。但是,如果我打开cmd并自己运行命令,它会成功启动。
INNO代码:
[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的参数。 任何想法?
~~~~~~~更新~~~~~~
正如下面评论中所建议的那样(参考:Debugging non-working batch file or command executed from Inno Setup installer),我运行它以便cmd保持打开状态,并从蝙蝠文件中注释掉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。完全相同的回声输出。
答案 0 :(得分:0)
好的,所以它与INNO exec()没有任何关系,因为我可以通过cmd手动运行bat文件并让它通过INNO exec()回显与回声完全相同的输出。所以它必须是一个问题(尽管管理员权限)与权限或bat / java本身。