Spartakhus

Steam Shortcut Creation

Nov 24th, 2015
584
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $myScriptRoot = "c:\Program Files (x86)\Steam\"
  2.  
  3. function executeSteamCmd {
  4. Write-Host "Executing Steamcmd"
  5.     $arguments = @()
  6.     for($i=0; $i -lt $args.count; $i++){
  7.         for($j=0; $j -lt $args[$i].count; $j++){
  8.             if($args[$i].GetType() -eq [String]){
  9.                 $arguments += $args[$i]
  10.                 break
  11.             }
  12.             $arguments += $args[$i][$j]
  13.         }
  14.     }
  15.     #forcing the pipe to flush by spamming some useless output
  16.     for($i=0; $i -lt 50; $i++){
  17.         $arguments+="+app_info_print 0"
  18.     }
  19.     $arguments+="+quit"
  20.     [string]$out= & (Get-Item "$($myScriptRoot)steamcmd.exe").FullName $arguments
  21.     $out.subString(0, $out.IndexOf("AppID : 0,"))
  22. }
  23.  
  24.  
  25.  
  26. function createShortcut{
  27.     Write-Host "creating Shortcut"
  28.     $shell = New-Object -comObject WScript.Shell
  29.     if(Test-Path "$Home\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Steam\$($args[0].Name).lnk"){
  30.         Write-Host "skipping shortcut $Home\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Steam\$($args[0].Name).lnk (file already exists)"
  31.         return
  32.     }
  33.     Write-Host "creating shortcut $Home\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Steam\$($args[0].Name).lnk"
  34.     $lnk = $shell.CreateShortcut("$Home\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Steam\$($args[0].Name).lnk")
  35.     $lnk.TargetPath = (Get-Item "$($myScriptRoot)steam.exe").FullName
  36.     $lnk.Arguments = "-applaunch $($args[0].AppID)"
  37.     if(Test-Path $args[0].Icon){
  38.         $lnk.IconLocation = $args[0].Icon
  39.     }else{
  40.         $lnk.IconLocation = $args[0].Path
  41.     }
  42.     $lnk.Save()
  43. }
  44.  
  45.  
  46.  
  47.  
  48.     [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
  49.     Write-Host "start"
  50.     if(-not (Test-Path "$Home\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Steam\")){
  51.         mkdir "$Home\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Steam\"
  52.     }
  53.     $tmp = (executeSteamCmd "+apps_installed" | Select-String "AppID (\d*) : `"([^`"]*)`" : (.*?)  " -AllMatches).Matches
  54.     $installed = @()
  55.     for($i=0; $i -lt $tmp.count; $i++){
  56.         $installed += (,@{"AppID" = $tmp[$i].Groups[1].value; "Name"=$tmp[$i].Groups[2].value.replace(":",""); "Path" = $tmp[$i].Groups[3].value; "Icon" = ""})
  57.     }
  58.     $arguments = $installed.AppID|%{"+app_info_print $_"}
  59.     $tmp = ((executeSteamCmd $arguments[0..$arguments.count]) | Select-String "AppID : (\d*),.*?`"clienticon`"\s*`"([^`"]*)`".*?`"executable`"\s*`"([^`"]*?\.exe)`"" -AllMatches).Matches
  60.     #"
  61.     for($i=0; $i -lt $tmp.count; $i++){
  62.         $installed[$installed.AppID.indexOf([string]($tmp[$i].Groups[1].value))].Path+="\$($tmp[$i].Groups[3].value)"
  63.         $installed[$installed.AppID.indexOf([string]($tmp[$i].Groups[1].value))].Icon="$($(Get-Item "$($myScriptRoot)steam\games\").FullName)$($tmp[$i].Groups[2].value).ico"
  64.     }
  65.     for($i=0; $i -lt $installed.count; $i++){
  66.         createShortcut $installed[$i]
  67.     }
Advertisement
Add Comment
Please, Sign In to add comment