我正在尝试让我的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://
答案 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
另见