关于 macos:Firemonkey 应用程序 – 在 OS X 下运行时启动外部应用程序

Firemonkey application - launch external app when running under OS X

我有一个 Firemonkey 应用程序(Delphi Berlin 10.1)并希望从中启动一个外部程序。 (外部程序是帮助文件查看器。)

当我为 Win32 编译时,我可以简单地这样做(当外部程序与主可执行文件位于同一文件夹中时):

1
2
3
path := ExtractFilePath(ParamStr(0));
path := path + 'MyViewer.exe';
ShellExecute(0, 'open', PWideChar(path), nil, nil, SW_SHOWNORMAL);

当我为 OS X 编译时,我有外部程序 MyViewer.app 的 Mac 版本。我应该把它放在哪里?如何将它放入 PAServer 创建的包中?启动它需要什么代码?


  • 这显示了 Windows 和 OSX 的等价物:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    uses
    {$IFDEF MSWINDOWS}
    winapi.shellapi
    {$ENDIF}
    {$IFDEF POSIX}
    Posix.Stdlib
    {$ENDIF POSIX}
    ;

    function ExecuteFile(const filename, Params, DefaultDir: string;
          ShowCmd: integer): THandle;
      begin
        {$IFDEF MSWINDOWS}
          result := ShellExecute(0, 'Open', PChar(filename), PChar(Params),
            PChar(DefaultDir), ShowCmd);
        {$ENDIF}
        {$IFDEF MACOS}
          _system(PAnsiChar('open ' + AnsiString(filename)));
        {$ENDIF}
      end;
  • 我通过在制作第一个包后将另一个签名包放在第一个包内的任何位置来做到这一点。我认为您可以通过使用 Delphi 中的 Deploy 页面将其他应用程序放入捆绑包中,只需将其他可执行文件(不是捆绑包)放在与 Delphi 放置主应用程序代码相同的位置即可。