Інсталювати Steam
увійти
|
мова
简体中文 (спрощена китайська)
繁體中文 (традиційна китайська)
日本語 (японська)
한국어 (корейська)
ไทย (тайська)
Български (болгарська)
Čeština (чеська)
Dansk (данська)
Deutsch (німецька)
English (англійська)
Español - España (іспанська — Іспанія)
Español - Latinoamérica (іспанська — Латинська Америка)
Ελληνικά (грецька)
Français (французька)
Italiano (італійська)
Bahasa Indonesia (індонезійська)
Magyar (угорська)
Nederlands (нідерландська)
Norsk (норвезька)
Polski (польська)
Português (португальська — Португалія)
Português - Brasil (португальська — Бразилія)
Română (румунська)
Русский (російська)
Suomi (фінська)
Svenska (шведська)
Türkçe (турецька)
Tiếng Việt (в’єтнамська)
Повідомити про проблему з перекладом
Just had a look - when you choose the option "Create Desktop Shortcut" (from Steam), it creates an Internet Shortcut - a url, which, (I assume) is not pinnable by default.
One method:
From Steam - Right click on a game > Properties > Local Files > Browse Files > Right click on the main game executable (e.g. hl2.exe for Half Life 2 games) > Pin to Start
There may be a faster way to get it done though (apart from the initial installation options).
But at least it's a solution! Thanks!
EDIT: odd thing is that shortcuts dragged into that folder aren't picked up and cannot be pinned. Excellent work!
C:\Users\<User Name>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Steam
If you require "Live Tiles" for Steam games - have a look through the third party application: "Steam Tile" (Microsoft Store) - https://www.microsoft.com/en-US/store/apps/Steam-Tile/9WZDNCRFHZKV
Get steamcmd from here
It's an official commandlinetool from valve.
Put it into your steamfolder.
Now open Powershell (just type it into the searchbar and hit enter)
Browse to your steam installation directory by entering
cd C:\Program Files (x86)\Steam\ [enter]
(Adjust according to your installation dir)
now copy and paste the folowing into powershell and hit enter:
function executeSteamCmd {
Write-Host "Executing Steamcmd"
if($PSScriptRoot){
$myScriptRoot = "$PSScriptRoot\"
}
$arguments = @()
for($i=0; $i -lt $args.count; $i++){
for($j=0; $j -lt $args[$i].count; $j++){
if($args[$i].GetType() -eq [String]){
$arguments += $args[$i]
break
}
$arguments += $args[$i][$j]
}
}
#forcing the pipe to flush by spamming some useless output
for($i=0; $i -lt 50; $i++){
$arguments+="+app_info_print 0"
}
$arguments+="+quit"
[string]$out= & (Get-Item "$($myScriptRoot)steamcmd.exe").FullName $arguments
$out.subString(0, $out.IndexOf("AppID : 0,"))
}
function createShortcut{
if($PSScriptRoot){
$myScriptRoot = "$PSScriptRoot\"
}
Write-Host "creating Shortcut"
$shell = New-Object -comObject WScript.Shell
if(Test-Path "$Home\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Steam\$($args[0].Name).lnk"){
Write-Host "skipping shortcut $Home\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Steam\$($args[0].Name).lnk (file already exists)"
return
}
Write-Host "creating shortcut $Home\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Steam\$($args[0].Name).lnk"
$lnk = $shell.CreateShortcut("$Home\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Steam\$($args[0].Name).lnk")
$lnk.TargetPath = (Get-Item "$($myScriptRoot)steam.exe").FullName
$lnk.Arguments = "-applaunch $($args[0].AppID)"
if(Test-Path $args[0].Icon){
$lnk.IconLocation = $args[0].Icon
}else{
$lnk.IconLocation = $args[0].Path
}
$lnk.Save()
}
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
if($PSScriptRoot){
$myScriptRoot = "$PSScriptRoot\"
}
Write-Host "start"
if(-not (Test-Path "$Home\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Steam\")){
mkdir "$Home\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Steam\"
}
$tmp = (executeSteamCmd "+apps_installed" | Select-String "AppID (\d*) : `"([^`"]*)`" : (.*?) " -AllMatches).Matches
$installed = @()
for($i=0; $i -lt $tmp.count; $i++){
$installed += (,@{"AppID" = $tmp[$i].Groups[1].value; "Name"=$tmp[$i].Groups[2].value.replace(":",""); "Path" = $tmp[$i].Groups[3].value; "Icon" = ""})
}
$arguments = $installed.AppID|%{"+app_info_print $_"}
$tmp = ((executeSteamCmd $arguments[0..$arguments.count]) | Select-String "AppID : (\d*),.*?`"clienticon`"\s*`"([^`"]*)`".*?`"executable`"\s*`"([^`"]*?\.exe)`"" -AllMatches).Matches
#"
for($i=0; $i -lt $tmp.count; $i++){
$installed[$installed.AppID.indexOf([string]($tmp[$i].Groups[1].value))].Path+="\$($tmp[$i].Groups[3].value)"
$installed[$installed.AppID.indexOf([string]($tmp[$i].Groups[1].value))].Icon="$($(Get-Item "$($myScriptRoot)steam\games\").FullName)$($tmp[$i].Groups[2].value).ico"
}
for($i=0; $i -lt $installed.count; $i++){
createShortcut $installed[$i]
}
This creates reall shortcuts (.lnk) instead of .url files into your startmenu in a folder named steam.
Those shortcuts can be found by the search, pinned as a tile and have the icons set according to the game they are for.
The script does NOT overwrite any preexisting lnk files.
Note: steam uses ':' in game names. The script simply removes them, as they are not allowed in filenames. The script doesn't check for any other unallowed characters, it may fail for some games.
Note2: You can also save the script into a file into your steamdirectory with .ps1 extension and execute it via '.\scriptpath\scriptname'.
You may need to execute 'Set-ExecutionPolicy RemoteSigned Process' before the script, to allow scriptexecution for the duration of the powershellsession.
VS
create a shortcut for every single game you have installed via a contextmenu, hit ok to dismiss the messagebox about the creation, move the shortcut to the startmenu folder and still be not able to search for the shortcuts via startmenu.
I know MY favorite =D
Outstanding solution, Matzurai. Thanks for taking the time to solve the problem instead of waiting for a solution that we might never see from Valve.
Thank you!