From 5f22f829b9fa5a9957e14c5f542c0a6d2a02937d Mon Sep 17 00:00:00 2001 From: alex47exe Date: Thu, 21 Feb 2019 19:48:41 +0000 Subject: [PATCH] v1.2.0 - now runs as administrator only at first launch, if 'run_admin = 1' in ini file - now can run the game through a different executable (e.g. settings launcher) at first launch --- ProgramData.ini | 2 +- Readme.md | 3 +- UniGame_Launcher_one.au3 | 131 ++++++++++++++++++++------------ UniGame_Launcher_one.exe | Bin 892928 -> 893440 bytes UniGame_Launcher_one.ini | 20 ++++- UniGame_Launcher_two.au3 | 158 +++++++++++++++++++++++++++------------ UniGame_Launcher_two.exe | Bin 893440 -> 893952 bytes UniGame_Launcher_two.ini | 29 +++++-- 8 files changed, 237 insertions(+), 106 deletions(-) diff --git a/ProgramData.ini b/ProgramData.ini index cf9a8c0..0d5d0e9 100644 --- a/ProgramData.ini +++ b/ProgramData.ini @@ -1,4 +1,4 @@ -# ___ UniGame Launcher v1.1.0 © 2017-2018, SalFisher47 +# ___ UniGame Launcher v1.2.0 © 2017-2019, SalFisher47 [launcher] diff --git a/Readme.md b/Readme.md index b3e7624..c3f9c61 100644 --- a/Readme.md +++ b/Readme.md @@ -9,10 +9,11 @@ Universal launcher for games, to be placed in game folder. I would say it's best **Features:** -- runs as administrator only at first launch +- runs as administrator only at first launch, if `run_admin = 1` in *ini* file - can run game executable with arguments and / or compatibility settings - can run game executable on the first cpu core, thanks to included [RunFirst.exe](https://www.activeplus.com/products/runfirst) - to be used only on some older games that don't run properly on multi-core cpus +- can run the game through a different executable (e.g. settings launcher) at first launch - if savegame folder is specified, creates a *_savegame.lnk* shortcut to it ------ diff --git a/UniGame_Launcher_one.au3 b/UniGame_Launcher_one.au3 index d8424b5..7013732 100644 --- a/UniGame_Launcher_one.au3 +++ b/UniGame_Launcher_one.au3 @@ -7,9 +7,10 @@ #AutoIt3Wrapper_Compression=4 #AutoIt3Wrapper_UPX_Parameters=-9 --strip-relocs=0 --compress-exports=0 --compress-icons=0 #AutoIt3Wrapper_Res_Description=UniGame Launcher -#AutoIt3Wrapper_Res_Fileversion=1.1.0.47 -#AutoIt3Wrapper_Res_ProductVersion=1.1.0.47 -#AutoIt3Wrapper_Res_LegalCopyright=2017-2018, SalFisher47 +#AutoIt3Wrapper_Res_Fileversion=1.2.0.47 +#AutoIt3Wrapper_Res_ProductVersion=1.2.0.47 +#AutoIt3Wrapper_Res_LegalCopyright=2017-2019, SalFisher47 +#AutoIt3Wrapper_Res_SaveSource=n #AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** @@ -19,22 +20,22 @@ #pragma compile(InputBoxRes, true) #pragma compile(CompanyName, 'SalFisher47') #pragma compile(FileDescription, 'UniGame Launcher') -#pragma compile(FileVersion, 1.1.0.47) +#pragma compile(FileVersion, 1.2.0.47) #pragma compile(InternalName, 'UniGame Launcher') -#pragma compile(LegalCopyright, '2017-2018, SalFisher47') +#pragma compile(LegalCopyright, '2017-2019, SalFisher47') #pragma compile(OriginalFilename, UniGame_Launcher_one.exe) #pragma compile(ProductName, 'UniGame Launcher') -#pragma compile(ProductVersion, 1.1.0.47) +#pragma compile(ProductVersion, 1.2.0.47) #EndRegion ;**** Pragma Compile **** -; === UniGame Launcher.au3 ========================================================================================================= +; === UniGame_Launcher_one.au3 ===================================================================================================== ; Title .........: UniGame Launcher ; Version .......: 1.1.0.47 ; AutoIt Version : 3.3.14.5 ; Language ......: English -; Description ...: Universal Game Launcher +; Description ...: Universal Game Launcher one ; Author(s) .....: SalFisher47 -; Last Modified .: November 18, 2018 - last compiled on January 8 2019 +; Last Modified .: January 19, 2019 - last compiled on January 19 2019 ; ================================================================================================================================== Global $Env_RoamingAppData = @AppDataDir, _ @@ -45,6 +46,11 @@ Global $Env_RoamingAppData = @AppDataDir, _ If @error Then $Env_SavedGames = $Env_UserProfile & "\Saved Games" $Ini = @ScriptDir & "\" & StringTrimRight(@ScriptName, 4) & ".ini" +$ini_RunAdmin = IniRead($ini, "launcher", "run_admin", "") + +; check for game path and add it to ini file in C:\ProgramData\SalFisher47\UniGame Launcher +If Not FileExists(@AppDataCommonDir & "\SalFisher47\UniGame Launcher") Then DirCreate(@AppDataCommonDir & "\SalFisher47\UniGame Launcher") +FileInstall("ProgramData.ini", @AppDataCommonDir & "\SalFisher47\UniGame Launcher\" & StringTrimRight(@ScriptName, 4) & ".ini", 0) $exe_run = IniRead($Ini, "Exe", "exe_run", "") $exe_path_full = @ScriptDir & "\" & $exe_run @@ -53,20 +59,18 @@ $exe_path_only = StringTrimRight($exe_path_full, StringLen($exe_only)+1) $exe_cmd = IniRead($Ini, "Exe", "exe_cmd", "") $exe_compat = IniRead($Ini, "Exe", "exe_compat", "") +$exe_run_alt = IniRead($Ini, "Exe", "exe_run_alt", "") +$exe_path_full_alt = @ScriptDir & "\" & $exe_run_alt +$exe_only_alt = StringTrimLeft($exe_path_full_alt, StringInStr($exe_path_full_alt, "\", 0, -1)) +$exe_path_only_alt = StringTrimRight($exe_path_full_alt, StringLen($exe_only_alt)+1) +$exe_cmd_alt = IniRead($Ini, "Exe", "exe_cmd_alt", "") +$exe_compat_alt = IniRead($Ini, "Exe", "exe_compat_alt", "") + $run_first = IniRead($Ini, "Exe", "run_first", 0) If Not FileExists(@AppDataCommonDir & "\SalFisher47\RunFirst") Then DirCreate(@AppDataCommonDir & "\SalFisher47\RunFirst") FileInstall("RunFirst\RunFirst.exe", @AppDataCommonDir & "\SalFisher47\RunFirst\RunFirst.exe", 0) FileInstall("RunFirst\RunFirst.txt", @AppDataCommonDir & "\SalFisher47\RunFirst\RunFirst.txt", 0) -; check for game path and add it to ini file in C:\ProgramData\SalFisher47\UniGame Launcher -If Not FileExists(@AppDataCommonDir & "\SalFisher47\UniGame Launcher") Then DirCreate(@AppDataCommonDir & "\SalFisher47\UniGame Launcher") -FileInstall("ProgramData.ini", @AppDataCommonDir & "\SalFisher47\UniGame Launcher\" & StringTrimRight(@ScriptName, 4) & ".ini", 0) -$first_launch = 1 -If IniRead(@AppDataCommonDir & "\SalFisher47\UniGame Launcher\" & StringTrimRight(@ScriptName, 4) & ".ini", "launcher", "game_path", "") <> @ScriptDir Then - $first_launch = 0 - IniWrite(@AppDataCommonDir & "\SalFisher47\UniGame Launcher\" & StringTrimRight(@ScriptName, 4) & ".ini", "launcher", "game_path", " " & @ScriptDir) -EndIf - ; check for savegame path and add it to ini file in C:\ProgramData\SalFisher47\UniGame Launcher $ini_Savegame_dir = IniRead($ini, "savegame", "savegame_dir", "") $ini_Savegame_subdir = IniRead($ini, "savegame", "savegame_subdir", "") @@ -89,42 +93,81 @@ Switch $ini_Savegame_dir Case "GameDir" $Savegame_dir = @ScriptDir & "\" & $ini_Savegame_subdir EndSwitch -If $Savegame_dir <> "" Then + +If IniRead(@AppDataCommonDir & "\SalFisher47\UniGame Launcher\" & StringTrimRight(@ScriptName, 4) & ".ini", "launcher", "game_path", "") <> @ScriptDir Then + $first_launch = 1 + IniWrite(@AppDataCommonDir & "\SalFisher47\UniGame Launcher\" & StringTrimRight(@ScriptName, 4) & ".ini", "launcher", "game_path", " " & @ScriptDir) If IniRead(@AppDataCommonDir & "\SalFisher47\UniGame Launcher\" & StringTrimRight(@ScriptName, 4) & ".ini", "launcher", "savegame_path", "") <> $Savegame_dir Then - ;$first_launch = 0 IniWrite(@AppDataCommonDir & "\SalFisher47\UniGame Launcher\" & StringTrimRight(@ScriptName, 4) & ".ini", "launcher", "savegame_path", " " & $Savegame_dir) EndIf -EndIf - -If $first_launch == 1 Then - _RunUser() + If $ini_RunAdmin == 1 Then + _RunAdmin() + Exit + Else + _RunMain() + Exit + EndIf Else - _RunAdmin() + If IsAdmin() Then + $first_launch = 1 + If IniRead(@AppDataCommonDir & "\SalFisher47\UniGame Launcher\" & StringTrimRight(@ScriptName, 4) & ".ini", "launcher", "savegame_path", "") <> $Savegame_dir Then + IniWrite(@AppDataCommonDir & "\SalFisher47\UniGame Launcher\" & StringTrimRight(@ScriptName, 4) & ".ini", "launcher", "savegame_path", " " & $Savegame_dir) + EndIf + _RunMain() + Exit + Else + $first_launch = 0 + If IniRead(@AppDataCommonDir & "\SalFisher47\UniGame Launcher\" & StringTrimRight(@ScriptName, 4) & ".ini", "launcher", "savegame_path", "") <> $Savegame_dir Then + IniWrite(@AppDataCommonDir & "\SalFisher47\UniGame Launcher\" & StringTrimRight(@ScriptName, 4) & ".ini", "launcher", "savegame_path", " " & $Savegame_dir) + EndIf + _RunMain() + Exit + EndIf EndIf -Func _RunUser() ; main script - RegRead('HKCU\Software\Valve\Steam', 'SteamPath') - If @error Then - RegWrite('HKCU\Software\Valve\Steam', 'SteamExe','REG_SZ','d:/steam/steam.exe') - RegWrite('HKCU\Software\Valve\Steam', 'SteamPath','REG_SZ','d:/steam') - RegWrite('HKLM\SOFTWARE\Valve\Steam', 'InstallPath','REG_SZ','D:\Steam') - EndIf - If RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers", $exe_path_full) <> $exe_compat Then - RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers", $exe_path_full, "REG_SZ", $exe_compat) - EndIf +$desktopRatio = Round(@DesktopWidth/@DesktopHeight, 2) + +_RunMain() + +Func _RunMain() ; main script +RegRead('HKCU\Software\Valve\Steam', 'SteamPath') +If @error Then + RegWrite('HKCU\Software\Valve\Steam', 'SteamExe','REG_SZ','d:/steam/steam.exe') + RegWrite('HKCU\Software\Valve\Steam', 'SteamPath','REG_SZ','d:/steam') + RegWrite('HKLM\SOFTWARE\Valve\Steam', 'InstallPath','REG_SZ','D:\Steam') +EndIf +If RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers", $exe_path_full) <> $exe_compat Then + RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers", $exe_path_full, "REG_SZ", $exe_compat) +EndIf +If $Savegame_dir <> "" Then + If Not FileExists($Savegame_dir) Then DirCreate($Savegame_dir) + FileCreateShortcut($Savegame_dir, @ScriptDir & "\_savegame.lnk") +EndIf +If $first_launch == 1 Then + ; add commands here to run before game exe at first launch If $run_first == 1 Then - If $Savegame_dir <> "" Then - If Not FileExists($Savegame_dir) Then DirCreate($Savegame_dir) - FileCreateShortcut($Savegame_dir, @ScriptDir & "\_savegame.lnk") + If $exe_run_alt <> "" Then + ShellExecute(@AppDataCommonDir & "\SalFisher47\RunFirst\RunFirst.exe", '"' & $exe_path_full_alt & '"' & " " & $exe_cmd_alt & " " & $CmdLineRaw, $exe_path_only_alt, "", @SW_HIDE) + Else + ShellExecute(@AppDataCommonDir & "\SalFisher47\RunFirst\RunFirst.exe", '"' & $exe_path_full & '"' & " " & $exe_cmd & " " & $CmdLineRaw, $exe_path_only, "", @SW_HIDE) EndIf - ShellExecute(@AppDataCommonDir & "\SalFisher47\RunFirst\RunFirst.exe", '"' & $exe_path_full & '"' & " " & $exe_cmd & " " & $CmdLineRaw, $exe_path_only, "", @SW_HIDE) Else - If $Savegame_dir <> "" Then - If Not FileExists($Savegame_dir) Then DirCreate($Savegame_dir) - FileCreateShortcut($Savegame_dir, @ScriptDir & "\_savegame.lnk") + If $exe_run_alt <> "" Then + ShellExecute($exe_only_alt, " " & $exe_cmd_alt & " " & $CmdLineRaw, $exe_path_only_alt) + Else + ShellExecute($exe_only, " " & $exe_cmd & " " & $CmdLineRaw, $exe_path_only) EndIf + EndIf + ; add commands here to run after game exe at first launch +Else + ; add commands here to run before game exe at every launch, except the first one + If $run_first == 1 Then + ShellExecute(@AppDataCommonDir & "\SalFisher47\RunFirst\RunFirst.exe", '"' & $exe_path_full & '"' & " " & $exe_cmd & " " & $CmdLineRaw, $exe_path_only, "", @SW_HIDE) + Else ShellExecute($exe_only, " " & $exe_cmd & " " & $CmdLineRaw, $exe_path_only) EndIf + ; add commands here to run after game exe at every launch, except the first one +EndIf EndFunc Func _RunAdmin() ; run main script as admin on first launch @@ -132,10 +175,6 @@ Func _RunAdmin() ; run main script as admin on first launch RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers", @ScriptDir & "\" & StringTrimRight(@ScriptName, 4) & ".exe", "REG_SZ", "RUNASADMIN") EndIf ;--- - If $Savegame_dir <> "" Then - If Not FileExists($Savegame_dir) Then DirCreate($Savegame_dir) - FileCreateShortcut($Savegame_dir, @ScriptDir & "\_savegame.lnk") - EndIf ShellExecute(StringTrimRight(@ScriptName, 4) & ".exe", $CmdLineRaw, @ScriptDir) ;--- If RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers", @ScriptDir & "\" & StringTrimRight(@ScriptName, 4) & ".exe") == "RUNASADMIN" Then diff --git a/UniGame_Launcher_one.exe b/UniGame_Launcher_one.exe index b35381c4821186d939cec2dfbcba149a377d24a1..0cbae6f308adc8dddcf456efff1e3b15e3b121ce 100644 GIT binary patch delta 5782 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 WnAt%~Sjcq @ScriptDir Then - $first_launch = 0 - IniWrite(@AppDataCommonDir & "\SalFisher47\UniGame Launcher\" & StringTrimRight(@ScriptName, 4) & ".ini", "launcher", "game_path", " " & @ScriptDir) -EndIf - ; check for savegame path and add it to ini file in C:\ProgramData\SalFisher47\UniGame Launcher $ini_Savegame_dir = IniRead($ini, "savegame", "savegame_dir", "") $ini_Savegame_subdir = IniRead($ini, "savegame", "savegame_subdir", "") @@ -96,20 +107,43 @@ Switch $ini_Savegame_dir Case "GameDir" $Savegame_dir = @ScriptDir & "\" & $ini_Savegame_subdir EndSwitch -If $Savegame_dir <> "" Then + +If IniRead(@AppDataCommonDir & "\SalFisher47\UniGame Launcher\" & StringTrimRight(@ScriptName, 4) & ".ini", "launcher", "game_path", "") <> @ScriptDir Then + $first_launch = 1 + IniWrite(@AppDataCommonDir & "\SalFisher47\UniGame Launcher\" & StringTrimRight(@ScriptName, 4) & ".ini", "launcher", "game_path", " " & @ScriptDir) If IniRead(@AppDataCommonDir & "\SalFisher47\UniGame Launcher\" & StringTrimRight(@ScriptName, 4) & ".ini", "launcher", "savegame_path", "") <> $Savegame_dir Then - ;$first_launch = 0 IniWrite(@AppDataCommonDir & "\SalFisher47\UniGame Launcher\" & StringTrimRight(@ScriptName, 4) & ".ini", "launcher", "savegame_path", " " & $Savegame_dir) EndIf -EndIf - -If $first_launch == 1 Then - _RunUser() + If $ini_RunAdmin == 1 Then + _RunAdmin() + Exit + Else + _RunMain() + Exit + EndIf Else - _RunAdmin() + If IsAdmin() Then + $first_launch = 1 + If IniRead(@AppDataCommonDir & "\SalFisher47\UniGame Launcher\" & StringTrimRight(@ScriptName, 4) & ".ini", "launcher", "savegame_path", "") <> $Savegame_dir Then + IniWrite(@AppDataCommonDir & "\SalFisher47\UniGame Launcher\" & StringTrimRight(@ScriptName, 4) & ".ini", "launcher", "savegame_path", " " & $Savegame_dir) + EndIf + _RunMain() + Exit + Else + $first_launch = 0 + If IniRead(@AppDataCommonDir & "\SalFisher47\UniGame Launcher\" & StringTrimRight(@ScriptName, 4) & ".ini", "launcher", "savegame_path", "") <> $Savegame_dir Then + IniWrite(@AppDataCommonDir & "\SalFisher47\UniGame Launcher\" & StringTrimRight(@ScriptName, 4) & ".ini", "launcher", "savegame_path", " " & $Savegame_dir) + EndIf + _RunMain() + Exit + EndIf EndIf -Func _RunUser() ; main script +$desktopRatio = Round(@DesktopWidth/@DesktopHeight, 2) + +_RunMain() + +Func _RunMain() ; main script RegRead('HKCU\Software\Valve\Steam', 'SteamPath') If @error Then RegWrite('HKCU\Software\Valve\Steam', 'SteamExe','REG_SZ','d:/steam/steam.exe') @@ -120,35 +154,67 @@ If @OSArch == "X86" Then If RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers", $exe32_path_full) <> $exe32_compat Then RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers", $exe32_path_full, "REG_SZ", $exe32_compat) EndIf - If $run_first == 1 Then - If $Savegame_dir <> "" Then - If Not FileExists($Savegame_dir) Then DirCreate($Savegame_dir) - FileCreateShortcut($Savegame_dir, @ScriptDir & "\_savegame.lnk") + If $Savegame_dir <> "" Then + If Not FileExists($Savegame_dir) Then DirCreate($Savegame_dir) + FileCreateShortcut($Savegame_dir, @ScriptDir & "\_savegame.lnk") + EndIf + If $first_launch == 1 Then + ; add commands here to run before game exe at first launch + If $run_first == 1 Then + If $exe32_run_alt <> "" Then + ShellExecute(@AppDataCommonDir & "\SalFisher47\RunFirst\RunFirst.exe", '"' & $exe32_path_full_alt & '"' & " " & $exe32_cmd_alt & " " & $CmdLineRaw, $exe32_path_only_alt, "", @SW_HIDE) + Else + ShellExecute(@AppDataCommonDir & "\SalFisher47\RunFirst\RunFirst.exe", '"' & $exe32_path_full & '"' & " " & $exe32_cmd & " " & $CmdLineRaw, $exe32_path_only, "", @SW_HIDE) + EndIf + Else + If $exe32_run_alt <> "" Then + ShellExecute($exe32_only_alt, " " & $exe32_cmd_alt & " " & $CmdLineRaw, $exe32_path_only_alt) + Else + ShellExecute($exe32_only, " " & $exe32_cmd & " " & $CmdLineRaw, $exe32_path_only) + EndIf EndIf - ShellExecute(@AppDataCommonDir & "\SalFisher47\RunFirst\RunFirst.exe", '"' & $exe32_path_full & '"' & " " & $exe32_cmd & " " & $CmdLineRaw, $exe32_path_only, "", @SW_HIDE) + ; add commands here to run after game exe at first launch Else - If $Savegame_dir <> "" Then - If Not FileExists($Savegame_dir) Then DirCreate($Savegame_dir) - FileCreateShortcut($Savegame_dir, @ScriptDir & "\_savegame.lnk") + ; add commands here to run before game exe at every launch, except the first one + If $run_first == 1 Then + ShellExecute(@AppDataCommonDir & "\SalFisher47\RunFirst\RunFirst.exe", '"' & $exe32_path_full & '"' & " " & $exe32_cmd & " " & $CmdLineRaw, $exe32_path_only, "", @SW_HIDE) + Else + ShellExecute($exe32_only, " " & $exe32_cmd & " " & $CmdLineRaw, $exe32_path_only) EndIf - ShellExecute($exe32_only, " " & $exe32_cmd & " " & $CmdLineRaw, $exe32_path_only) + ; add commands here to run after game exe at every launch, except the first one EndIf Else If RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers", $exe64_path_full) <> $exe64_compat Then RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers", $exe64_path_full, "REG_SZ", $exe64_compat) EndIf - If $run_first == 1 Then - If $Savegame_dir <> "" Then - If Not FileExists($Savegame_dir) Then DirCreate($Savegame_dir) - FileCreateShortcut($Savegame_dir, @ScriptDir & "\_savegame.lnk") + If $Savegame_dir <> "" Then + If Not FileExists($Savegame_dir) Then DirCreate($Savegame_dir) + FileCreateShortcut($Savegame_dir, @ScriptDir & "\_savegame.lnk") + EndIf + If $first_launch == 1 Then + ; add commands here to run before game exe at first launch + If $run_first == 1 Then + If $exe64_run_alt <> "" Then + ShellExecute(@AppDataCommonDir & "\SalFisher47\RunFirst\RunFirst.exe", '"' & $exe64_path_full_alt & '"' & " " & $exe64_cmd_alt & " " & $CmdLineRaw, $exe64_path_only_alt, "", @SW_HIDE) + Else + ShellExecute(@AppDataCommonDir & "\SalFisher47\RunFirst\RunFirst.exe", '"' & $exe64_path_full & '"' & " " & $exe64_cmd & " " & $CmdLineRaw, $exe64_path_only, "", @SW_HIDE) + EndIf + Else + If $exe64_run_alt <> "" Then + ShellExecute($exe64_only_alt, " " & $exe64_cmd_alt & " " & $CmdLineRaw, $exe64_path_only_alt) + Else + ShellExecute($exe64_only, " " & $exe64_cmd & " " & $CmdLineRaw, $exe64_path_only) + EndIf EndIf - ShellExecute(@AppDataCommonDir & "\SalFisher47\RunFirst\RunFirst.exe", '"' & $exe64_path_full & '"' & " " & $exe64_cmd & " " & $CmdLineRaw, $exe64_path_only, "", @SW_HIDE) + ; add commands here to run after game exe at first launch Else - If $Savegame_dir <> "" Then - If Not FileExists($Savegame_dir) Then DirCreate($Savegame_dir) - FileCreateShortcut($Savegame_dir, @ScriptDir & "\_savegame.lnk") + ; add commands here to run before game exe at every launch, except the first one + If $run_first == 1 Then + ShellExecute(@AppDataCommonDir & "\SalFisher47\RunFirst\RunFirst.exe", '"' & $exe64_path_full & '"' & " " & $exe64_cmd & " " & $CmdLineRaw, $exe64_path_only, "", @SW_HIDE) + Else + ShellExecute($exe64_only, " " & $exe64_cmd & " " & $CmdLineRaw, $exe64_path_only) EndIf - ShellExecute($exe64_only, " " & $exe64_cmd & " " & $CmdLineRaw, $exe64_path_only) + ; add commands here to run after game exe at every launch, except the first one EndIf EndIf EndFunc @@ -158,10 +224,6 @@ Func _RunAdmin() ; run main script as admin on first launch RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers", @ScriptDir & "\" & StringTrimRight(@ScriptName, 4) & ".exe", "REG_SZ", "RUNASADMIN") EndIf ;--- - If $Savegame_dir <> "" Then - If Not FileExists($Savegame_dir) Then DirCreate($Savegame_dir) - FileCreateShortcut($Savegame_dir, @ScriptDir & "\_savegame.lnk") - EndIf ShellExecute(StringTrimRight(@ScriptName, 4) & ".exe", $CmdLineRaw, @ScriptDir) ;--- If RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers", @ScriptDir & "\" & StringTrimRight(@ScriptName, 4) & ".exe") == "RUNASADMIN" Then diff --git a/UniGame_Launcher_two.exe b/UniGame_Launcher_two.exe index c2a8c8893d18e32f28dd928bc4dca23847b2339c..6fc73f49fbb71705af4a1dbc60c356e4597b3982 100644 GIT binary patch delta 6367 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 diff --git a/UniGame_Launcher_two.ini b/UniGame_Launcher_two.ini index 5360a75..abd151e 100644 --- a/UniGame_Launcher_two.ini +++ b/UniGame_Launcher_two.ini @@ -1,22 +1,28 @@ -# ___ UniGame Launcher v1.1.0 © 2017-2018, SalFisher47 +# ___ UniGame Launcher v1.2.0 © 2017-2019, SalFisher47 [exe] -# ___ 32bit executable to run, command-line parameters & compatibility settings +# ___ 32bit & 64bit executables to run, command-line parameters & compatibility settings # For optional compatibility settings, use WIN95 / WIN98 / WINXPSP2 / WINXPSP3 / ... # ... VISTARTM / VISTASP1 / VISTASP2 / WIN7RTM / WIN8RTM with or without RUNASADMIN -exe32_run = +exe32_run = game32.exe exe32_cmd = exe32_compat = - -# ___ 64bit executable to run, command-line parameters & compatibility settings -# For optional compatibility settings, use WIN95 / WIN98 / WINXPSP2 / WINXPSP3 / ... -# ... VISTARTM / VISTASP1 / VISTASP2 / WIN7RTM / WIN8RTM with or without RUNASADMIN -exe64_run = +exe64_run = game64.exe exe64_cmd = exe64_compat = +# ___ 32bit & 64bit executables to run only at first launch, command-line parameters & compatibility settings +# Use it only if you need to run the game through different executables (e.g. settings launcher) at first launch, ... +# ... or same as above, but with different command-line parameters & compatibility settings +exe32_run_alt = +exe32_cmd_alt = +exe32_compat_alt = +exe64_run_alt = +exe64_cmd_alt = +exe64_compat_alt = + # ___ If 1, runs the game on the first cpu core, through RunFirst.exe # To be used only on some older games that don't run properly on multi-core cpus run_first = 0 @@ -38,4 +44,11 @@ savegame_dir = savegame_subdir = +[launcher] + +# ___ If 1, runs this launcher as administrator at first launch +# Running from another PC, username or game folder, will do the same +run_admin = 1 + +