From 3fe80df33bdd5c1de9110a6393a7c6ae09a16981 Mon Sep 17 00:00:00 2001
From: Castro-Fidel <tergoevm@gmail.com>
Date: Tue, 9 Jun 2020 23:36:28 +0300
Subject: [PATCH] major changes for create_shortcut scripts

---
 data_from_portwine/port_on                 | 15 ++++++++++
 data_from_portwine/scripts/create_shortcut | 35 +++++++++++-----------
 data_from_portwine/scripts/lang            |  8 +++++
 data_from_portwine/scripts/vars            |  8 ++---
 4 files changed, 44 insertions(+), 22 deletions(-)

diff --git a/data_from_portwine/port_on b/data_from_portwine/port_on
index 5f940b5b..0fc59d2f 100755
--- a/data_from_portwine/port_on
+++ b/data_from_portwine/port_on
@@ -154,6 +154,13 @@ class CompatData:
     def upgrade_pfx(self, old_ver):
         if old_ver == CURRENT_PREFIX_VERSION:
             return
+    
+            #replace broken .NET installations with wine-mono support
+            if os.path.exists(self.prefix_dir + "/drive_c/windows/Microsoft.NET/NETFXRepair.exe") and \
+                    file_is_wine_fake_dll(self.prefix_dir + "/drive_c/windows/system32/mscoree.dll"):
+                log("Broken .NET installation detected, switching to wine-mono.")
+                #deleting this directory allows wine-mono to work
+                shutil.rmtree(self.prefix_dir + "/drive_c/windows/Microsoft.NET")
 
     def copy_pfx(self):
         with open(self.tracked_files_file, "w") as tracked_files:
@@ -348,6 +355,8 @@ class Session:
         self.check_environment("PW_OLD_GL_STRING", "oldglstr")
         self.check_environment("PW_USE_SECCOMP", "seccomp")
         self.check_environment("PW_NO_VR", "novrclient")
+        self.check_environment("PW_NO_WINEMFPLAY", "nomfplay")
+        self.check_environment("PW_NO_WRITE_WATCH", "nowritewatch")
 
         if not "noesync" in self.compat_config:
             self.env["WINEESYNC"] = "1" 
@@ -387,6 +396,12 @@ class Session:
             self.dlloverrides["vrclient_x64"] = ""
             self.dlloverrides["openvr_api_dxvk"] = ""
 
+        if "nomfplay" in self.compat_config:
+            self.dlloverrides["mfplay"] = "n"
+
+        if "nowritewatch" in self.compat_config:
+            self.env["WINE_DISABLE_WRITE_WATCH"] = "1"
+            
         s = ""
         for dll in self.dlloverrides:
             setting = self.dlloverrides[dll]
diff --git a/data_from_portwine/scripts/create_shortcut b/data_from_portwine/scripts/create_shortcut
index 838ab256..704512d2 100755
--- a/data_from_portwine/scripts/create_shortcut
+++ b/data_from_portwine/scripts/create_shortcut
@@ -2,31 +2,30 @@
 # Author: PortWINE-Linux.ru
 . "$(dirname $(readlink -f "$0"))/runlib"
 ########################################################################
-PORTPROTON_NAME=$(zenity --entry --text "Введите название ярлыка:")
+PORTPROTON_NAME=$(zenity --entry --text "${sc_name}")
 if [ $? -eq 1 ];then exit 1; fi
-PORTPROTON_EXE=$(zenity --file-selection --file-filter=""*.exe" "*.bat"" --title="Создаем ярлык. Выберите файл запуска..." --filename="${PORT_WINE_PATH}/data/pfx/drive_c/")
+PORTPROTON_EXE=$(zenity --file-selection --file-filter=""*.exe" "*.bat"" \
+--title="${sc_path}" --filename="${PORT_WINE_PATH}/data/pfx/drive_c/")
 if [ $? -eq 1 ];then exit 1; fi
-PORTPROTON_IMG=$(zenity --file-selection --file-filter=*.png --title="Создаем ярлык. Выберите иконку PNG формата..." --filename="${HOME}/")
+PORTPROTON_PATH="$(dirname "$(readlink -f "${PORTPROTON_EXE}")")"
+if [ -x "`which wrestool 2>/dev/null`" ]; then
+    wrestool -x --output="${PORT_WINE_PATH}/data/img/" -t14 "${PORTPROTON_EXE}"
+fi
+PORTPROTON_IMG=$(zenity --file-selection --file-filter=""*.png" "*.ico"" \
+--title="${sc_img}" --filename="${PORT_WINE_PATH}/data/img/")
 if [ $? -eq 1 ];then exit 1; fi
 ########################################################################
 cp -f "${PORTPROTON_IMG}" "${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png"
 name_desktop="${PORTPROTON_NAME}" 
-echo "[Desktop Entry]" \
-> "${PORT_WINE_PATH}/${name_desktop}.desktop"
-echo "Name=${PORTPROTON_NAME}" \
->> "${PORT_WINE_PATH}/${name_desktop}.desktop"
-echo "Exec="sh \"${PORT_WINE_PATH}/data/scripts/start\" \"${PORTPROTON_EXE}\""" \
->> "${PORT_WINE_PATH}/${name_desktop}.desktop"
-echo "Type=Application" \
->> "${PORT_WINE_PATH}/${name_desktop}.desktop"
-echo "Categories=Game" \
->> "${PORT_WINE_PATH}/${name_desktop}.desktop"
-echo "StartupNotify=true" \
->> "${PORT_WINE_PATH}/${name_desktop}.desktop"
-echo "Path="${PORT_WINE_PATH}/data/scripts/"" \
->> "${PORT_WINE_PATH}/${name_desktop}.desktop"
-echo "Icon="${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png"" \
+echo "[Desktop Entry]" > "${PORT_WINE_PATH}/${name_desktop}.desktop"
+echo "Name=${PORTPROTON_NAME}" >> "${PORT_WINE_PATH}/${name_desktop}.desktop" 
+echo "Exec="export PATH_TO_GAME=\""$PORTPROTON_PATH"\" \&\& sh \"${PORT_WINE_PATH}/data/scripts/start\" \"${PORTPROTON_EXE}\""" \
 >> "${PORT_WINE_PATH}/${name_desktop}.desktop"
+echo "Type=Application" >> "${PORT_WINE_PATH}/${name_desktop}.desktop"
+echo "Categories=Game" >> "${PORT_WINE_PATH}/${name_desktop}.desktop"
+echo "StartupNotify=true" >> "${PORT_WINE_PATH}/${name_desktop}.desktop"
+echo "Path="${PORT_WINE_PATH}/data/scripts/"" >> "${PORT_WINE_PATH}/${name_desktop}.desktop"
+echo "Icon="${PORTPROTON_IMG}"" >> "${PORT_WINE_PATH}/${name_desktop}.desktop"
 chmod u+x "${PORT_WINE_PATH}/${name_desktop}.desktop"
 ########################################################################
 `zenity --info --title "Успешно." --text "Ярлык создан в корневом каталоге порта." --no-wrap ` > /dev/null 2>&1  
diff --git a/data_from_portwine/scripts/lang b/data_from_portwine/scripts/lang
index 76c0a898..67fb3741 100755
--- a/data_from_portwine/scripts/lang
+++ b/data_from_portwine/scripts/lang
@@ -70,6 +70,10 @@ then
 	export hud_compiler="активность шейдерного компилятора"
 	export hud_samplers="текущее количество используемых пар сэмплеров (только для D3D9)"
 
+	export sc_name="Введите название будущего ярлыка:"
+	export sc_path="Создаем ярлык. Выберите файл запуска..."
+	export sc_img="Создаем ярлык. Выберите иконку ICO, или PNG формата..."
+
 elif [ "${update_loc}" = "ENG" ] 
 then
 
@@ -136,5 +140,9 @@ then
 	export hud_compiler="Shows shader compiler activity"
 	export hud_samplers="Shows the current number of sampler pairs used [D3D9 Only]"
 
+	export sc_name="Name shortcut:"
+	export sc_path="Select the .exe file..."
+	export sc_img="Select the .ICO or .PNG file..."
+
 fi
 
diff --git a/data_from_portwine/scripts/vars b/data_from_portwine/scripts/vars
index b328135b..08163185 100755
--- a/data_from_portwine/scripts/vars
+++ b/data_from_portwine/scripts/vars
@@ -7,21 +7,21 @@ export gamename=
 export gamedir=
 if [ ! -z ${gamedir} ]; then
     export PATH_TO_GAME="${PORT_WINE_PATH}/data/pfx/drive_c/Program Files (x86)/${gamedir}"
-else
-    export PATH_TO_GAME="${PORT_WINE_PATH}/data/pfx/drive_c/Program Files (x86)/"
 fi
 export gamestart="${PATH_TO_GAME}/.exe"
 export porturl="http://portwine-linux.ru/"
 ########################################################################
 #export MESA_GL_VERSION_OVERRIDE=4.4COMPAT
 export STAGING_SHARED_MEMORY=1
-export PW_FORCE_LARGE_ADDRESS_AWARE=1
-export PW_USE_SECCOMP=1
 export WINEDLLOVERRIDES="winemenubuilder.exe=d"
 export PW_LOG=0
 export PW_ACO=1
 export PW_NO_VR=1
 export PW_FILELOCK=1
+export PW_USE_SECCOMP=1
+export PW_NO_WINEMFPLAY=1
+export PW_NO_WRITE_WATCH=1
+export PW_FORCE_LARGE_ADDRESS_AWARE=1
 ########################################################################
 ADD_IN_START_PORTWINE ()
 {