2016-11-17 45 views
0

我試圖讓我的Inno Setup的程序來運行該命令steam://如何使用Inno Setup的像蒸汽運行命令://

此命令通過RUN工具窗口打開蒸汽程序。

我按WindowsKey+R並鍵入命令steam://並打開Steam程序。

如何讓Inno Setup調用此命令?

我嘗試沒有成功如下:

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

也試過了代碼波紋管,並在[文件]部分調用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工具。

我知道我可以從默認文件夾C:\Program Files (x86)\Steam\Steam.exe調用Steam.exe,但我試圖避免用戶在默認文件夾中沒有Steam的問題...所以我試圖使用此方法運行此「外部協議」(我不知道這是否是正確的名稱):steam://

回答

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