INNO设置 - CMD .bat问题(PrivilegesRequired = admin,在代码部分,直接在cmd中工作)

时间:2018-06-14 08:45:20

标签: batch-file cmd inno-setup

我有一个特殊的问题,并且已经用尽了我能找到的关于这个问题的所有主题。

见下面的更新

我试图通过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。完全相同的回声输出。

1 个答案:

答案 0 :(得分:0)

好的,所以它与INNO exec()没有任何关系,因为我可以通过cmd手动运行bat文件并让它通过INNO exec()回显与回声完全相同的输出。所以它必须是一个问题(尽管管理员权限)与权限或bat / java本身。