如何使用Inno Setup来运行像steam这样的命令://

时间:2016-11-17 19:55:00

标签: protocols inno-setup

我正在尝试让我的Inno安装程序运行此命令steam://

此命令用于通过Windows RUN工具打开Steam程序。

我按WindowsKey+R并输入命令steam://,然后打开Steam程序。

如何让Inno Setup调用此命令?

我尝试了以下但没有成功:

[Run]
Filename: "C:\Users\LUCAS\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Accessories\Run.lnk"; Parameters: "steam://;

还尝试了以下代码,并在[Files]部分调用了AfterInstall: RunOtherInstaller;,但它在安装时出错:%1 is not a valid Win32 application

[Code]
procedure RunOtherInstaller;
var
  ResultCode: Integer;
begin
  if not Exec(ExpandConstant('C:\Users\LUCAS\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Accessories\Run.lnk'), 'steam://', '', SW_SHOWNORMAL,
    ewWaitUntilTerminated, ResultCode)
  then
    MsgBox('Error!!' + #13#10 +
      SysErrorMessage(ResultCode), mbError, MB_OK);
end;

这个链接有点奇怪...当我试图跟随它时它实际上指向无处,但它就是调用windows RUN工具。

我知道我可以从默认文件夹Steam.exe调用C:\Program Files (x86)\Steam\Steam.exe,但我正在尝试避免在默认文件夹中没有Steam的用户出现问题...所以我正在尝试使用此方法运行这个"外部协议" (我不知道这是否是正确的名称):steam://

2 个答案:

答案 0 :(得分:0)

您可以检查Steam位置的注册表。 我的触发安装脚本的一部分:

[Code]
function SteamNotInstalled(): Boolean;
var 
Path: String;
ErrorCode: Integer;
begin
  Result := True;
  if (RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\Valve\Steam',
     'InstallPath', Path)) and (FileExists(Path + '\Steam.exe')) then begin
              ShellExec('', ExpandConstant('"' + Path + '\Steam.exe' + '"'), ' -install' + ExpandConstant(' "{src}"'),
              '', SW_SHOW, ewNoWait, ErrorCode);
              Result := False;
  end;
end;

或者您可以在shellexec

中使用[Run] section

答案 1 :(得分:0)

您可以将steam://网址打开为任何其他网址。

procedure OpenUrl(Url: string);
var
  ErrorCode: Integer;
begin
  ShellExec('open', Url, '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;

或使用postinstall [Run]部分条目:

[Run]
Filename: steam://xxx; Description: "Run game"; Flags: postinstall shellexec

另见