From b74e55e55ab5ea075dbe3a91264bf6703baa69da Mon Sep 17 00:00:00 2001 From: Hillwood Yang Date: Sun, 17 Mar 2024 20:44:16 +0800 Subject: [PATCH] Merge changes from upstream's git version --- Changelog | 8 + verb/QQGame.verb | 2 +- winetricks-zh | 6607 ++++++++++++---------------------------------- 3 files changed, 1626 insertions(+), 4991 deletions(-) diff --git a/Changelog b/Changelog index f8c8fef..8b8899e 100755 --- a/Changelog +++ b/Changelog @@ -1,3 +1,11 @@ +------------------------------------------- +Sun Mar 17 2024 - hillwood@opensuse.org + +- Merge changes from upstream's git version +- Update 163 music, wechat, 同花顺免费版, kugou +- Drop support for QQ, evernote, QQMusic, 有道云笔记 and 大智慧365 +- AliWangWang reborns: update version to 10.01.03C + ------------------------------------------- Wed Dec 20 2020 - hillwood@opensuse.org diff --git a/verb/QQGame.verb b/verb/QQGame.verb index d634261..a717172 100644 --- a/verb/QQGame.verb +++ b/verb/QQGame.verb @@ -1,4 +1,4 @@ -w_metadata QQGame games\ +w_metadata QQGame apps\ title="QQGame2020" \ publisher="Tencent" \ year="2020" \ diff --git a/winetricks-zh b/winetricks-zh index b3f5aa9..9c53c37 100755 --- a/winetricks-zh +++ b/winetricks-zh @@ -6,7 +6,7 @@ # Name of this version of winetricks (YYYYMMDD) # (This doesn't change often, use the sha256sum of the file when reporting problems) -WINETRICKS_VERSION=20220411-next +WINETRICKS_VERSION=20240105-next # This is a UTF-8 file # You should see an o with two dots over it here [ö] @@ -39,8 +39,11 @@ WINETRICKS_VERSION=20220411-next # - xz is used by some verbs to decompress tar archives. # - zenity is needed by the GUI, though it can limp along somewhat with kdialog/xmessage. # -# On Ubuntu, the following line can be used to install all the prerequisites: -# sudo apt install aria2 binutils cabextract fuseiso p7zip-full policykit-1 tor unrar unzip wine xdg-utils xz-utils zenity +# On Ubuntu (23.04 and newer), the following line can be used to install all the prerequisites: +# sudo apt install 7zip aria2 binutils cabextract fuseiso pkexec tor unrar-free unzip wine xdg-utils xz-utils zenity +# +# On older Ubuntu, the following line can be used to install all the prerequisites: +# sudo apt install aria2 binutils cabextract fuseiso p7zip-full policykit-1 tor unrar-free unzip wine xdg-utils xz-utils zenity # # On Fedora, these commands can be used (RPM Fusion is used to install unrar): # sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm @@ -53,7 +56,7 @@ WINETRICKS_VERSION=20220411-next # # Copyright: # Copyright (C) 2007-2014 Dan Kegel -# Copyright (C) 2008-2022 Austin English +# Copyright (C) 2008-2024 Austin English # Copyright (C) 2010-2011 Phil Blankenship # Copyright (C) 2010-2015 Shannon VanWagner # Copyright (C) 2010 Belhorma Bendebiche @@ -74,6 +77,7 @@ WINETRICKS_VERSION=20220411-next # Copyright (C) 2013-2017 Andrey Gusev # Copyright (C) 2013-2020 Hillwood Yang # Copyright (C) 2013,2016 André Hentschel +# Copyright (C) 2023 Georgi Georgiev (RacerBG) # # License: # This program is free software; you can redistribute it and/or @@ -192,11 +196,12 @@ w_askpermission() printf '%s\n%b\n%s\n' "${W_TEXT_LINE}" "${@}" "${W_TEXT_LINE}" if test "${W_OPT_UNATTENDED}"; then - _W_timeout="--timeout 5" + _W_timeout="--timeout" + _W_timeout_length="5" fi case ${WINETRICKS_GUI} in - zenity) ${WINETRICKS_GUI} "${_W_timeout}" --question --title=winetricks --text="$(echo "$@" | sed 's,\\\\,\\\\\\\\,g')" --no-wrap;; + zenity) ${WINETRICKS_GUI} "${_W_timeout}" "${_W_timeout_length}" --question --title=winetricks --text="$(echo "$@" | sed 's,\\\\,\\\\\\\\,g')" --no-wrap;; kdialog) ${WINETRICKS_GUI} --title winetricks --warningcontinuecancel "$@" ;; none) if [ -n "${_W_timeout}" ]; then @@ -211,12 +216,12 @@ w_askpermission() if test $? -ne 0; then case ${LANG} in + bg*) w_die "Операцията е отменена, излизане." ;; uk*) w_die "Операція скасована." ;; pl*) w_die "Anulowano operację, opuszczanie." ;; pt*) w_die "Operação cancelada, saindo." ;; *) w_die "Operation cancelled, quitting." ;; esac - exec false fi unset _W_timeout @@ -230,11 +235,20 @@ w_info() printf '%s\n%b\n%s\n' "${W_TEXT_LINE}" "${@}" "${W_TEXT_LINE}" fi - case ${WINETRICKS_GUI} in - zenity) ${WINETRICKS_GUI} --timeout=3 --info --width=400 --title=winetricks --text="$(echo "$@" | sed 's,\\\\,\\\\\\\\,g')" --no-wrap;; - kdialog) ${WINETRICKS_GUI} --title winetricks --msgbox "$@" ;; - none) ;; - esac + # kdialog doesn't allow a timeout unless you use --passivepopup + if test "${W_OPT_UNATTENDED}"; then + case ${WINETRICKS_GUI} in + zenity) ${WINETRICKS_GUI} --timeout 5 --info --width=400 --title=winetricks --text="$(echo "$@" | sed 's,\\\\,\\\\\\\\,g')";; + kdialog) ${WINETRICKS_GUI} --passivepopup "$@" 5 --title winetricks;; + none) ;; + esac + else + case ${WINETRICKS_GUI} in + zenity) ${WINETRICKS_GUI} --info --width=400 --title=winetricks --text="$(echo "$@" | sed 's,\\\\,\\\\\\\\,g')";; + kdialog) ${WINETRICKS_GUI} --title winetricks --error "$@";; + none) ;; + esac + fi } # Display warning message to stderr (since it is called inside redirected code) @@ -245,16 +259,21 @@ w_warn() printf '%s\nwarning: %b\n%s\n' "${W_TEXT_LINE}" "${*}" "${W_TEXT_LINE}" fi + # kdialog doesn't allow a timeout unless you use --passivepopup if test "${W_OPT_UNATTENDED}"; then - _W_timeout="--timeout 5" + case ${WINETRICKS_GUI} in + zenity) ${WINETRICKS_GUI} --timeout 5 --error --width=400 --title=winetricks --text="$(echo "$@" | sed 's,\\\\,\\\\\\\\,g')";; + kdialog) ${WINETRICKS_GUI} --passivepopup "$@" 5 --title winetricks;; + none) ;; + esac + else + case ${WINETRICKS_GUI} in + zenity) ${WINETRICKS_GUI} --error --width=400 --title=winetricks --text="$(echo "$@" | sed 's,\\\\,\\\\\\\\,g')";; + kdialog) ${WINETRICKS_GUI} --title winetricks --error "$@";; + none) ;; + esac fi - case ${WINETRICKS_GUI} in - zenity) ${WINETRICKS_GUI} "${_W_timeout}" --error --width=400 --title=winetricks --text="$(echo "$@" | sed 's,\\\\,\\\\\\\\,g')";; - kdialog) ${WINETRICKS_GUI} --title winetricks --error "$@" ;; - none) ;; - esac - unset _W_timeout } @@ -266,12 +285,13 @@ w_warn_cancel() printf '%s\n%b\n%s\n' "${W_TEXT_LINE}" "${@}" "${W_TEXT_LINE}" >&2 if test "${W_OPT_UNATTENDED}"; then - _W_timeout="--timeout 5" + _W_timeout="--timeout" + _W_timeout_length="5" fi # Zenity has no cancel button, but will set status to 1 if you click the go-away X case ${WINETRICKS_GUI} in - zenity) ${WINETRICKS_GUI} "${_W_timeout}" --error --title=winetricks --text="$(echo "$@" | sed 's,\\\\,\\\\\\\\,g')";; + zenity) ${WINETRICKS_GUI} "${_W_timeout}" "${_W_timeout_length}" --error --title=winetricks --text="$(echo "$@" | sed 's,\\\\,\\\\\\\\,g')";; kdialog) ${WINETRICKS_GUI} --title winetricks --warningcontinuecancel "$@" ;; none) ;; esac @@ -316,6 +336,31 @@ _w_get_broken_messages() # Unify the broken messages (to make it easier for future translators): case ${LANG} in + bg*) + # default broken messages + broken_good_version_known_default="Пакетът (${W_PACKAGE}) е повреден в wine-${_wine_version_stripped}. Използвайте >=${good_version}. Вижте ${bug_link} за повече информация. Използвайте --force, за да опитате въпреки това." + broken_good_and_bad_version_known_default="Пакетът (${W_PACKAGE}) е повреден в wine-${_wine_version_stripped}. Повреден е от версия ${bad_version}. Използвайте >=${good_version}. Вижте ${bug_link} за повече информация. Използвайте --force, за да опитате въпреки това." + broken_only_bad_version_known_default="Пакетът (${W_PACKAGE}) е повреден в wine-${_wine_version_stripped}. Повреден е от версия ${bad_version}. Вижте ${bug_link} за повече информация. Използвайте --force, за да опитате въпреки това." + broken_no_version_known_default="Пакетът (${W_PACKAGE}) е повреден. Вижте ${bug_link} за повече информация. Използвайте --force, за да опитате въпреки това." + + # mingw broken messages + broken_good_version_known_mingw="Пакетът (${W_PACKAGE}) е повреден в wine-${_wine_version_stripped}, когато wine е създаден с mingw. Използвайте >=${good_version} или wine, без mingw. Вижте ${bug_link} за повече информация. Използвайте --force, за да опитате въпреки това." + broken_good_and_bad_version_known_mingw="Пакетът (${W_PACKAGE}) е повреден в wine-${_wine_version_stripped}. Повреден е от версия ${bad_version}, когато wine е създаден с mingw. Използвайте >=${good_version} или wine, без mingw. Вижте ${bug_link} за повече информация. Използвайте --force, за да опитате въпреки това." + broken_only_bad_version_known_mingw="Пакетът (${W_PACKAGE}) е повреден в wine-${_wine_version_stripped}. Повреден е от версия ${bad_version}, когато wine е създаден с mingw. Вижте ${bug_link} за повече информация. Използвайте --force, за да опитате въпреки това." + broken_no_version_known_mingw="Пакетът (${W_PACKAGE}) е повреден, когато wine е създаден с mingw. Вижте ${bug_link} за повече информация. Използвайте --force, за да опитате въпреки това." + + # no mingw broken messages + broken_good_version_known_no_mingw="Пакетът (${W_PACKAGE}) е повреден в wine-${_wine_version_stripped}, когато wine е създаден без mingw. Използвайте >=${good_version}. Вижте ${bug_link} за повече информация. Използвайте --force, за да опитате въпреки това." + broken_good_and_bad_version_known_no_mingw="Пакетът (${W_PACKAGE}) е повреден в wine-${_wine_version_stripped}. Повреден е от версия ${bad_version}, когато wine е създаден без mingw. Използвайте >=${good_version}. Вижте ${bug_link} за повече информация. Използвайте --force, за да опитате въпреки това." + broken_only_bad_version_known_no_mingw="Пакетът (${W_PACKAGE}) е повреден в wine-${_wine_version_stripped}. Повреден е от версия ${bad_version}, когато wine е създаден без mingw. Вижте ${bug_link} за повече информация. Използвайте --force, за да опитате въпреки това." + broken_no_version_known_no_mingw="Пакетът (${W_PACKAGE}) е повреден, когато wine е създаден без mingw. Вижте ${bug_link} за повече информация. Използвайте --force, за да опитате въпреки това." + + # win64 broken messages + broken_good_version_known_win64="Пакетът (${W_PACKAGE}) е повреден при 64-битовата архитектура на wine-${_wine_version_stripped}. Използвайте папка, създадена с WINEARCH=win32 или wine >=${good_version}. Вижте ${bug_link} за повече информация. Използвайте --force, за да опитате въпреки това." + broken_good_and_bad_version_known_win64="Пакетът (${W_PACKAGE}) е повреден при 64-битовата архитектура на wine-${_wine_version_stripped}. Повреден е от версия ${bad_version}. Използвайте папка, създадена с WINEARCH=win32 или wine to >=${good_version}. Вижте ${bug_link} за повече информация. Използвайте --force, за да опитате въпреки това." + broken_only_bad_version_known_win64="Пакетът (${W_PACKAGE}) е повреден при 64-битовата архитектура на wine-${_wine_version_stripped}. Повреден е от версия ${bad_version}. Използвайте папка, създадена с WINEARCH=win32. Вижте ${bug_link} за повече информация. Използвайте --force, за да опитате въпреки това." + broken_no_version_known_win64="Пакетът (${W_PACKAGE}) е повреден, когато wine е създаден без mingw. Вижте ${bug_link} за повече информация. Използвайте --force, за да опитате въпреки това." + ;; pt*) # default broken messages broken_good_version_known_default="O pacote (${W_PACKAGE}) está quebrado no wine-${_wine_version_stripped}. Atualize para >=${good_version}. Veja ${bug_link} para mais informações. Use --force para tentar forçar de toda forma." @@ -429,18 +474,12 @@ w_detect_mingw() # builtin=mingw (wine-4.11+) # See https://github.com/Winetricks/winetricks/issues/1461 - if w_wine_version_in 4.10, ; then - if grep -obUa "Wine placeholder DLL" "$(w_winepath -u "c:\\windows\\system32\\kernelbase.dll" 2>/dev/null)" | grep -q '64:Wine placeholder DLL'; then - _W_no_mingw=1 - elif grep -obUa "Wine builtin DLL" "$(w_winepath -u "c:\\windows\\system32\\kernelbase.dll" 2>/dev/null)" | grep -q '64:Wine builtin DLL'; then - _W_mingw=1 - else - w_warn "Unable to detect wine dlls, please file an issue on Github!" - fi - else - # FIXME: better message here (at least, easier to grep/recognize - echo "w_detect_mingw: mingw detection unimplemented for wine<4.11" + if grep -obUa "Wine placeholder DLL" "$(w_winepath -u "c:\\windows\\system32\\kernelbase.dll" 2>/dev/null)" | grep -q '64:Wine placeholder DLL'; then _W_no_mingw=1 + elif grep -obUa "Wine builtin DLL" "$(w_winepath -u "c:\\windows\\system32\\kernelbase.dll" 2>/dev/null)" | grep -q '64:Wine builtin DLL'; then + _W_mingw=1 + else + w_warn "Unable to detect wine dlls, please file an issue on Github!" fi } @@ -538,6 +577,7 @@ w_package_unsupported_win64() { if [ "${W_ARCH}" = "win64" ] ; then case ${LANG} in + bg*) w_warn "Пакетът (${W_PACKAGE}) не работи на 64-битовите инсталации. Трябва да използвате папка, създадена с WINEARCH=win32." ;; pl*) w_warn "Ten pakiet (${W_PACKAGE}) nie działa z 64-bitową instalacją. Musisz użyć prefiksu utworzonego z WINEARCH=win32." ;; pt*) w_warn "Este pacote (${W_PACKAGE}) não funciona em instalação de 64-bit. Você precisa usar um prefixo feito com WINEARCH=win32." ;; ru*) w_warn "Данный пакет не работает в 64-битном окружении. Используйте префикс, созданный с помощью WINEARCH=win32." ;; @@ -554,9 +594,10 @@ w_package_warn_win64() { if [ "${W_ARCH}" = "win64" ] ; then case ${LANG} in + bg*) w_warn "Пакетът (${W_PACKAGE}) вероятно няма да работи на 64-битовите инсталации. 32-битовите папки може да работят по-добре." ;; pt*) w_warn "Este pacote (${W_PACKAGE}) talvez não funcione completamente em 64-bit. Em prefixo 32-bit talvez funcione melhor." ;; pl*) w_warn "Ten pakiet (${W_PACKAGE}) może nie działać poprawnie z 64-bitową instalacją. Prefiks 32-bitowy może działać lepiej." ;; - ru*) w_warn "Данный пакет может работать не полностью в 64-битном окружении. 32-битные префиксы могут работать лучше." ;; + ru*) w_warn "Данный пакет может быть не полностью работоспособным в 64-битном окружении. 32-битные префиксы могут работать лучше." ;; zh_CN*) w_warn "(${W_PACKAGE}) 可能在64位环境下工作有问题,安装在32位环境可能会更好。" ;; zh_TW*|zh_HK*) w_warn "(${W_PACKAGE}) 可能在64元環境下工作有問題,安装在32元環境可能會更好。" ;; *) w_warn "This package (${W_PACKAGE}) may not fully work on a 64-bit installation. 32-bit prefixes may work better." ;; @@ -601,6 +642,7 @@ w_try() en_ms_194="exit status ${status} - normal, user selected 'restart later'" en_ms_236="exit status ${status} - newer version detected" + bg_abort="Важно: командата $* върна статуса ${status}. Прекратяване." en_abort="Note: command $* returned status ${status}. Aborting." pl_abort="Informacja: poelcenie $* zwróciło status ${status}. Przerywam." pt_abort="Nota: comando $* retornou o status ${status}. Cancelando." @@ -623,6 +665,7 @@ w_try() 0) ;; *) case ${LANG} in + bg*) w_die "${bg_abort}" ;; pl*) w_die "${pl_abort}" ;; pt*) w_die "${pt_abort}" ;; ru*) w_die "${ru_abort}" ;; @@ -655,14 +698,14 @@ w_try_7z() if [ -z "${WINETRICKS_FORCE_WIN_7Z}" ] && [ -x "$(command -v 7z 2>/dev/null)" ] ; then w_try 7z x "${filename}" -o"${destdir}" "$@" else - w_warn "Cannot find 7z. Using Windows 7-Zip instead. (You can avoid this by installing 7z, e.g. 'sudo apt-get install p7zip-full' or 'sudo yum install p7zip-plugins')." + w_warn "Cannot find 7z. Using Windows 7-Zip instead. (You can avoid this by installing 7z, e.g. 'sudo apt install 7zip' or 'sudo yum install p7zip-plugins')." WINETRICKS_OPT_SHAREDPREFIX=1 w_call 7zip # w_call above will wipe $W_TMP; if that's the CWD, things will break. So forcefully reset the directory: w_try_cd "${PWD}" # errors out if there is a space between -o and path - w_try "${WINE}" "${W_PROGRAMS_X86_WIN}\\7-Zip\\7z.exe" x "$(w_pathconv -w "${filename}")" -o"$(w_pathconv -w "${destdir}")" "$@" + w_try "${WINE}" "${W_PROGRAMS_X86_WIN}\\7-Zip\\7z.exe" x "$(w_pathconv -w "${filename}")" -y -o"$(w_pathconv -w "${destdir}")" "$@" fi } @@ -675,7 +718,7 @@ w_try_ar() if [ -z "${WINETRICKS_FORCE_WIN_7Z}" ] && [ -x "$(command -v ar 2>/dev/null)" ]; then w_try ar x "$@" else - w_warn "Cannot find ar. Using Windows 7-zip instead. (You can avoid this by installing binutils, e.g. 'sudo apt-get install binutils' or 'sudo yum install binutils')." + w_warn "Cannot find ar. Using Windows 7-zip instead. (You can avoid this by installing binutils, e.g. 'sudo apt install binutils' or 'sudo yum install binutils')." WINETRICKS_OPT_SHAREDPREFIX=1 w_call 7zip # w_call above will wipe $W_TMP; if that's the CWD, things will break. So forcefully reset the directory: @@ -691,7 +734,7 @@ w_try_cabextract() { # Not always installed, but shouldn't be fatal unless it's being used if test ! -x "$(command -v cabextract 2>/dev/null)"; then - w_die "Cannot find cabextract. Please install it (e.g. 'sudo apt-get install cabextract' or 'sudo yum install cabextract')." + w_die "Cannot find cabextract. Please install it (e.g. 'sudo apt install cabextract' or 'sudo yum install cabextract')." fi w_try cabextract -q "$@" @@ -774,6 +817,22 @@ _EOF_ unset _W_dest_dir } +w_try_mkdir() +{ + # Only print a message if the directory doesn't already exist + # If -q is given, only print in verbose mode + dir="$1" + + if [ "${dir}" = "-q" ]; then + dir="$2" + WINETRICKS_SUPER_QUIET=1 w_try mkdir -p "${dir}" + fi + + if [ ! -d "${dir}" ]; then + w_try mkdir -p "${dir}" + fi +} + w_try_msiexec64() { if test "${W_ARCH}" != "win64"; then @@ -841,7 +900,7 @@ w_try_unrar() if [ -z "${WINETRICKS_FORCE_WIN_7Z}" ] && [ -x "$(command -v unrar 2>/dev/null)" ]; then w_try unrar x "$@" else - w_warn "Cannot find unrar. Using Windows 7-Zip instead. (You can avoid this by installing unrar, e.g. 'sudo apt-get install unrar' or 'sudo yum install unrar')." + w_warn "Cannot find unrar. Using Windows 7-Zip instead. (You can avoid this by installing unrar, e.g. 'sudo apt install unrar-free' or 'sudo yum install unrar')." WINETRICKS_OPT_SHAREDPREFIX=1 w_call 7zip # w_call above will wipe $W_TMP; if that's the CWD, things will break. So forcefully reset the directory: @@ -872,7 +931,7 @@ w_try_unzip() 1|*) w_warn "Unzip failed, trying Windows 7-Zip instead." ;; esac else - w_warn "Cannot find unzip. Using Windows 7-Zip instead. (You can avoid this by installing unzip, e.g. 'sudo apt-get install unzip' or 'sudo yum install unzip')." + w_warn "Cannot find unzip. Using Windows 7-Zip instead. (You can avoid this by installing unzip, e.g. 'sudo apt install unzip' or 'sudo yum install unzip')." fi WINETRICKS_OPT_SHAREDPREFIX=1 w_call 7zip @@ -893,7 +952,7 @@ w_read_key() return "${TRUE}" fi - mkdir -p "${W_CACHE}/${W_PACKAGE}" + w_try_mkdir "${W_CACHE}/${W_PACKAGE}" # backwards compatible location # Auth doesn't belong in cache, since restoring it requires user input @@ -904,6 +963,9 @@ w_read_key() if ! test -f "${_W_keyfile}"; then # read key from user case ${LANG} in + bg*) _W_keymsg="Моля, въведете ключа за приложението '${W_PACKAGE}'" + _W_nokeymsg="Няма въведен ключ" + ;; da*) _W_keymsg="Angiv venligst registrerings-nøglen for pakken '${W_PACKAGE}'" _W_nokeymsg="Ingen nøgle angivet" ;; @@ -956,7 +1018,7 @@ w_verify_cabextract_available() # This should be called by verb_a, to give a proper warning if test ! -x "$(command -v cabextract 2>/dev/null)"; then - w_die "Cannot find cabextract. Please install it (e.g. 'sudo apt-get install cabextract' or 'sudo yum install cabextract')." + w_die "Cannot find cabextract. Please install it (e.g. 'sudo apt install cabextract' or 'sudo yum install cabextract')." fi w_try_cabextract -q -v >/dev/null 2>&1 @@ -1002,6 +1064,34 @@ w_expand_env() winetricks_early_wine_arch cmd.exe /c echo "%$1%" } +# Determine what architecture a binary file is built for +winetricks_get_file_arch() +{ + _W_file="$1" + # macOS uses Mach-O binaries, not ELF + if [ "$(uname -s)" = "Darwin" ]; then + _W_lipo_output="$(lipo -archs "${_W_file}")" + case "${_W_lipo_output}" in + "arm64") _W_file_arch="arm64" ;; + "i386") _W_file_arch="i386" ;; + "x86_64") _W_file_arch="x86_64" ;; + *) w_die "Unknown file arch: ${_W_lipo_output}" ;; + esac + else + # Assume ELF binaries for everything else + _W_ob_output="$(od -An -t x1 -j 0x12 -N 1 "${_W_file}" | tr -d "[:space:]")" + case "${_W_ob_output}" in + "3e") _W_file_arch="x86_64" ;; + "03"|"06") _W_file_arch="i386" ;; + "b7") _W_file_arch="aarch64" ;; + "28") _W_file_arch="aarch32" ;; + *) w_die "Unknown file arch: ${_W_ob_output}";; + esac + fi + + echo "${_W_file_arch}" +} + # Get the latest tagged release from github.com API w_get_github_latest_release() { @@ -1136,6 +1226,8 @@ winetricks_parse_wget_progress() # Parse a percentage, a size, and a time into $1, $2 and $3 # then use them to create the output line. case ${LANG} in + bg*) perl -p -e \ + '$| = 1; s/^.* +([0-9]+%) +([0-9,.]+[GMKB]) +([0-9hms,.]+).*$/\1\n# Изтегляне... \2 (\3)/' ;; pl*) perl -p -e \ '$| = 1; s/^.* +([0-9]+%) +([0-9,.]+[GMKB]) +([0-9hms,.]+).*$/\1\n# Pobieranie… \2 (\3)/' ;; ru*) perl -p -e \ @@ -1352,7 +1444,7 @@ w_download_to() fi if test ! -d "${_W_cache}" ; then - w_try mkdir -p "${_W_cache}" + w_try_mkdir "${_W_cache}" fi # Try download twice @@ -1383,6 +1475,7 @@ w_download_to() if test "${WINETRICKS_FORCE}" != 1; then case ${LANG} in + bg*) w_warn "Контролната сума на ${_W_cache}/${_W_file} не съвпада, повторен опит за изтегляне" ;; pl*) w_warn "Niezgodność sum kontrolnych dla ${_W_cache}/${_W_file}, pobieram ponownie" ;; pt*) w_warn "Checksum para ${_W_cache}/${_W_file} não confere, tentando novo download" ;; ru*) w_warn "Контрольная сумма файла ${_W_cache}/${_W_file} не совпадает, попытка повторной загрузки" ;; @@ -1458,6 +1551,7 @@ w_download_to() --retry-connrefused \ --timeout "${WINETRICKS_DOWNLOADER_TIMEOUT}" \ --tries "${WINETRICKS_DOWNLOADER_RETRIES}" \ + --header "Accept: */*" \ ${_W_cookiejar:+--load-cookies "${_W_cookiejar}"} \ ${_W_agent:+--user-agent="${_W_agent}"} \ "${_W_url}" @@ -1472,6 +1566,7 @@ w_download_to() -L \ -o "${_W_file}" \ -C - \ + --fail \ --retry "${WINETRICKS_DOWNLOADER_RETRIES}" \ ${_W_cookiejar:+--cookie "${_W_cookiejar}"} \ ${_W_agent:+--user-agent "${_W_agent}"} \ @@ -1639,6 +1734,7 @@ w_download_manual_to() if ! test -f "${W_CACHE}/${_W_packagename}/${_W_file}"; then case ${LANG} in + bg*) _W_dlmsg="Моля, изтеглете ${_W_file} от ${_W_url}, поставете го в ${W_CACHE}/${_W_packagename} и стартирайте този скрипт отново.";; da*) _W_dlmsg="Hent venligst filen ${_W_file} fra ${_W_url} og placér den i ${W_CACHE}/${_W_packagename}, kør derefter dette skript.";; de*) _W_dlmsg="Bitte laden Sie ${_W_file} von ${_W_url} runter, stellen Sie's in ${W_CACHE}/${_W_packagename}, dann wiederholen Sie dieses Kommando.";; pl*) _W_dlmsg="Proszę pobrać plik ${_W_file} z ${_W_url}, następnie umieścić go w ${W_CACHE}/${_W_packagename}, a na końcu uruchomić ponownie ten skrypt.";; @@ -1650,7 +1746,7 @@ w_download_manual_to() *) _W_dlmsg="Please download ${_W_file} from ${_W_url}, place it in ${W_CACHE}/${_W_packagename}, then re-run this script.";; esac - mkdir -p "${W_CACHE}/${_W_packagename}" + w_try_mkdir "${W_CACHE}/${_W_packagename}" w_open_folder "${W_CACHE}/${_W_packagename}" w_open_webpage "${_W_url}" sleep 3 # give some time for web browser to open @@ -1700,7 +1796,7 @@ w_mount() else WINETRICKS_IMG="${W_CACHE}/${W_PACKAGE}/$1.iso" fi - mkdir -p "${W_CACHE}/${W_PACKAGE}" + w_try_mkdir "${W_CACHE}/${W_PACKAGE}" if test -f "${WINETRICKS_IMG}"; then winetricks_mount_cached_iso @@ -1788,10 +1884,10 @@ _EOF_ w_ahk_do() { - if ! test -f "${W_CACHE}/ahk/AutoHotkey.exe"; then - w_download_to ahk https://github.com/AutoHotkey/AutoHotkey/releases/download/v1.0.48.05/AutoHotkey104805_Install.exe 4311c3e7c29ed2d67f415138360210bc2f55ff78758b20b003b91d775ee207b9 - w_try_7z "${W_CACHE}/ahk" "${W_CACHE}/ahk/AutoHotkey104805_Install.exe" AutoHotkey.exe AU3_Spy.exe - chmod +x "${W_CACHE}/ahk/AutoHotkey.exe" + if ! test -f "${W_CACHE}/ahk/AutoHotkeyU32.exe"; then + w_download_to ahk https://github.com/AutoHotkey/AutoHotkey/releases/download/v1.1.36.01/AutoHotkey_1.1.36.01_setup.exe 62734d219f14a942986e62d6c0fef0c2315bc84acd963430aed788c36e67e1ff + w_try_7z "${W_CACHE}/ahk" "${W_CACHE}/ahk/AutoHotkey_1.1.36.01_setup.exe" AutoHotkeyU32.exe + chmod +x "${W_CACHE}/ahk/AutoHotkeyU32.exe" fi # Previously this used printf + sed, but that was broken with BSD sed (FreeBSD/OS X): @@ -1801,7 +1897,7 @@ w_ahk_do() w_opt_unattended = ${W_OPT_UNATTENDED:-0} $@ _EOF_ - w_try "${WINE}" "${W_CACHE_WIN}\\ahk\\AutoHotkey.exe" "${W_TMP_WIN}\\${W_PACKAGE}.ahk" + w_try "${WINE}" "${W_CACHE_WIN}\\ahk\\AutoHotkeyU32.exe" "${W_TMP_WIN}\\${W_PACKAGE}.ahk" } # Function to protect Wine-specific sections of code. @@ -2308,9 +2404,7 @@ Usage: 'w_override_app_dlls app mode dll ...'." ;; echo "Using ${_W_mode} override for following DLLs when running ${_W_app}: $*" ( - echo REGEDIT4 - echo "" - echo "[HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\${_W_app}\\DllOverrides]" + printf 'REGEDIT4\n\n[HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DllOverrides]\n' "${_W_app}" ) > "${W_TMP}"/override-dll.reg while test "$1" != ""; do @@ -2330,222 +2424,56 @@ w_set_winver() _W_winver="$1" - if w_wine_version_in 5.7, ; then - # Make sure we pass the right version name: - case "${_W_winver}" in - # These are the mismatched ones: - # winecfg doesn't accept 'default' as an option (as of wine-5.9): - # https://bugs.winehq.org/show_bug.cgi?id=49241 - # For now, assuming win7: - default) _W_winver="win7";; - win2k3) _W_winver="win2003";; - win2k8) _W_winver="win2008";; - win2k8r2) _W_winver="win2008r2";; - - # xp has two entries (winxp/winxp64): - winxp) - if [ "${W_ARCH}" = "win64" ]; then - _W_winver="winxp64" - else - _W_winver="winxp" - fi - ;; - # These are the same: - nt351|nt40|vista|win10|win20|win2k|win30|win31|win7|win8|win81|win95|win98|winme) : ;; - *) w_die "Unsupported Windows version ${_W_winver}";; - esac - - w_try "${WINE}" winecfg -v "${_W_winver}" - else - # FIXME: remove this after wine-7.0 (i.e., after it's been in stable wine for a while): - - # First, delete any lingering version info, otherwise it may conflict: - ( - "${WINE}" reg delete "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion" /v SubVersionNumber /f || true - "${WINE}" reg delete "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion" /v VersionNumber /f || true - "${WINE}" reg delete "HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion" /v CSDVersion /f || true - "${WINE}" reg delete "HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion" /v CurrentBuildNumber /f || true - "${WINE}" reg delete "HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion" /v CurrentVersion /f || true - "${WINE}" reg delete "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /f || true - "${WINE}" reg delete "HKLM\\System\\CurrentControlSet\\Control\\ServiceCurrent" /v OS /f || true - "${WINE}" reg delete "HKLM\\System\\CurrentControlSet\\Control\\Windows" /v CSDVersion /f || true - "${WINE}" reg delete "HKCU\\Software\\Wine" /v Version /f || true - "${WINE}" reg delete "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /f || true - ) > /dev/null 2>&1 - - case "${_W_winver}" in - win31) - echo "Setting Windows version to ${_W_winver}" - cat > "${W_TMP}"/set-winver.reg <<_EOF_ -REGEDIT4 - -[HKEY_USERS\\S-1-5-4\\Software\\Wine] -"Version"="win31" - -_EOF_ - w_try_regedit "${W_TMP_WIN}"\\set-winver.reg - return - ;; - win95) - # This key is only used for Windows 95/98: - - echo "Setting Windows version to ${_W_winver}" - cat > "${W_TMP}"/set-winver.reg <<_EOF_ -REGEDIT4 - -[HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion] -"ProductName"="Microsoft Windows 95" -"SubVersionNumber"="" -"VersionNumber"="4.0.950" - -_EOF_ - w_try_regedit "${W_TMP_WIN}"\\set-winver.reg - return - ;; - win98) - # This key is only used for Windows 95/98: - - echo "Setting Windows version to ${_W_winver}" - cat > "${W_TMP}"/set-winver.reg <<_EOF_ -REGEDIT4 - -[HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion] -"ProductName"="Microsoft Windows 98" -"SubVersionNumber"=" A " -"VersionNumber"="4.10.2222" - -_EOF_ - w_try_regedit "${W_TMP_WIN}"\\set-winver.reg - return - ;; - nt40) - # Similar to modern version, but sets two extra keys: - - echo "Setting Windows version to ${_W_winver}" - cat > "${W_TMP}"/set-winver.reg <<_EOF_ -REGEDIT4 - -[HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows NT\\CurrentVersion] -"CSDVersion"="Service Pack 6a" -"CurrentBuildNumber"="1381" -"CurrentVersion"="4.0" - -[HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\ProductOptions] -"ProductType"="WinNT" - -[HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\ServiceCurrent] -"OS"="Windows_NT" - -[HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\Windows] -"CSDVersion"=dword:00000600 + # Make sure we pass the right version name: + case "${_W_winver}" in + # These are the mismatched ones: + # winecfg doesn't accept 'default' as an option (as of wine-5.9): + # https://bugs.winehq.org/show_bug.cgi?id=49241 + # For now, assuming win7: + default) _W_winver="win7";; + win2k3) _W_winver="win2003";; + win2k8) _W_winver="win2008";; + win2k8r2) _W_winver="win2008r2";; + + # xp has two entries (winxp/winxp64): + winxp) + if [ "${W_ARCH}" = "win64" ]; then + _W_winver="winxp64" + else + _W_winver="winxp" + fi + ;; + # These are the same: + nt351|nt40|vista|win10|win11|win20|win2k|win30|win31|win7|win8|win81|win95|win98|winme) : ;; + *) w_die "Unsupported Windows version ${_W_winver}";; + esac -_EOF_ - w_try_regedit "${W_TMP_WIN}"\\set-winver.reg - return - ;; - win2k) - csdversion="Service Pack 4" - currentbuildnumber="2195" - currentversion="5.0" - csdversion_hex=dword:00000400 - ;; - winxp) - # Special case, afaik it's the only Windows version that has different version numbers for 32/64-bit - # So ensure we set the arch appropriate version: - if [ "${W_ARCH}" = "win32" ]; then - csdversion="Service Pack 3" - currentbuildnumber="2600" - currentversion="5.1" - csdversion_hex=dword:00000300 - elif [ "${W_ARCH}" = "win64" ]; then - csdversion="Service Pack 2" - currentbuildnumber="3790" - currentversion="5.2" - csdversion_hex=dword:00000200 - "${WINE}" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "WinNT" /f - else - w_die "Invalid W_ARCH ${W_ARCH}" - fi - ;; - win2k3) - csdversion="Service Pack 2" - currentbuildnumber="3790" - currentversion="5.2" - csdversion_hex=dword:00000200 - "${WINE}" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "ServerNT" /f - ;; - vista) - csdversion="Service Pack 2" - currentbuildnumber="6002" - currentversion="6.0" - csdversion_hex=dword:00000200 - "${WINE}" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "WinNT" /f - ;; - win7|default) - csdversion="Service Pack 1" - currentbuildnumber="7601" - currentversion="6.1" - csdversion_hex=dword:00000100 - "${WINE}" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "WinNT" /f - ;; - win2k8) - csdversion="Service Pack 2" - currentbuildnumber="6002" - currentversion="6.0" - csdversion_hex=dword:00000200 - "${WINE}" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "ServerNT" /f - ;; - win2k8r2) - csdversion="Service Pack 1" - currentbuildnumber="7601" - currentversion="6.1" - csdversion_hex=dword:00000100 - "${WINE}" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "ServerNT" /f - ;; - win8) - csdversion="" - currentbuildnumber="9200" - currentversion="6.2" - csdversion_hex=dword:00000000 - "${WINE}" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "WinNT" /f - ;; - win81) - csdversion="" - currentbuildnumber="9600" - currentversion="6.3" - csdversion_hex=dword:00000000 - "${WINE}" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "WinNT" /f - ;; - win10) - csdversion="" - currentbuildnumber="10240" - currentversion="10.0" - csdversion_hex=dword:00000000 - "${WINE}" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "WinNT" /f - ;; - *) - w_die "Invalid Windows version given." - ;; - esac + w_try "${WINE}" winecfg -v "${_W_winver}" - echo "Setting Windows version to ${_W_winver}" - cat > "${W_TMP}"/set-winver.reg <<_EOF_ -REGEDIT4 + # Prevent a race when calling from another verb + w_wineserver -w +} -[HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows NT\\CurrentVersion] -"CSDVersion"="${csdversion}" -"CurrentBuildNumber"="${currentbuildnumber}" -"CurrentVersion"="${currentversion}" +# Restore a previously set winver. If not found, use default +w_restore_winver() +{ + if [ -z "${_W_user_winver}" ]; then + _W_user_winver="default" + fi -[HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\Windows] -"CSDVersion"=${csdversion_hex} + w_set_winver "${_W_user_winver}" -_EOF_ - w_try_regedit "${W_TMP_WIN}"\\set-winver.reg - fi # if w_wine_version_in 5.7, + unset "${_W_user_winver}" +} - # Prevent a race when calling from another verb - w_wineserver -w +# Get the current winver from winecfg, store it in a variable to be restored with w_restore_winver +w_store_winver() +{ + # Only set if not set already; for cases where a verb changes the version multiple times + # or calls a second verb that changes the version + if [ -z "${_W_user_winver}" ]; then + _W_user_winver=$("${WINE}" winecfg /v | tr -d '\r') + fi } w_unset_winver() @@ -2676,6 +2604,7 @@ w_workaround_wine_bug() esac case ${LANG} in + bg*) w_warn "Заобикаляне на проблема ${1} ${_W_msg}" ;; da*) w_warn "Arbejder uden om wine-fejl ${1} ${_W_msg}" ;; de*) w_warn "Wine-Fehler ${1} wird umgegangen ${_W_msg}" ;; pl*) w_warn "Obchodzenie błędu w wine ${1} ${_W_msg}" ;; @@ -2693,12 +2622,13 @@ w_workaround_wine_bug() # Function for verbs to register themselves so they show up in the menu. # Example: -# w_metadata wog games \ -# title="World of Goo Demo" \ -# pub="2D Boy" \ -# year="2008" \ -# media="download" \ -# file1="WorldOfGooDemo.1.0.exe" +# w_metadata cmd dlls \ +# title="MS cmd.exe" \ +# publisher="Microsoft" \ +# year="2004" \ +# media="download" \ +# file1="Q811493_W2K_SP4_X86_EN.exe" \ +# installed_file1="${W_SYSTEM32_DLLS_WIN}/cmd.exe" w_metadata() { @@ -2810,7 +2740,7 @@ w_do_call() load_vd "${arg}" _W_status=$? test "${W_OPT_NOCLEAN}" = 1 || rm -rf "${W_TMP}" - mkdir -p "${W_TMP}" + w_try_mkdir -q "${W_TMP}" return ${_W_status} fi @@ -2826,7 +2756,7 @@ w_do_call() W_TMP="${W_DRIVE_C}/windows/temp/_$1" W_TMP_WIN="C:\\windows\\Temp\\_$1" test "${W_OPT_NOCLEAN}" = 1 || rm -rf "${W_TMP}" - mkdir -p "${W_TMP}" + w_try_mkdir -q "${W_TMP}" # Unset all known used metadata values, in case this is a nested call unset conflicts installed_file1 installed_exe1 @@ -2842,7 +2772,7 @@ w_do_call() w_override_dlls "${cmd}" "${arg}" _W_status=$? test "${W_OPT_NOCLEAN}" = 1 || rm -rf "${W_TMP}" - mkdir -p "${W_TMP}" + w_try_mkdir "${W_TMP}" return ${_W_status} else w_die "No such verb $1" @@ -2853,7 +2783,7 @@ w_do_call() windows_cmd|wine_cmd) ;; *) case "${_W_category}-${WINETRICKS_OPT_SHAREDPREFIX}" in - apps-0|benchmarks-0|games-0) winetricks_set_wineprefix "${cmd}";; + apps-0|benchmarks-0) winetricks_set_wineprefix "${cmd}";; *) winetricks_set_wineprefix "${_W_prefix_name}";; esac # If it's a new wineprefix, give it metadata @@ -2864,7 +2794,7 @@ w_do_call() esac test "${W_OPT_NOCLEAN}" = 1 || rm -rf "${W_TMP}" - mkdir -p "${W_TMP}" + w_try_mkdir -q "${W_TMP}" # Don't install if a conflicting verb is already installed: # shellcheck disable=SC2154 @@ -2915,7 +2845,7 @@ w_do_call() # Clean up after this verb test "${W_OPT_NOCLEAN}" = 1 || rm -rf "${W_TMP}" - mkdir -p "${W_TMP}" + w_try_mkdir -q "${W_TMP}" # Reset whether use of user mount tool unset W_USE_USERMOUNT @@ -3053,7 +2983,7 @@ winetricks_download_setup() # torify needs --async-dns=false, see https://github.com/tatsuhiro-t/aria2/issues/613 aria2c_torify_opts="--async-dns=false" if [ ! -x "$(command -v torify 2>/dev/null)" ]; then - w_die "--torify was used, but torify is not installed, please install it." ; exit 1 + w_die "--torify was used, but torify is not installed, please install it." fi ;; *) torify= aria2c_torify_opts="" ;; @@ -3109,6 +3039,7 @@ winetricks_dl_url_to_stdout() winetricks_dl_warning() { case ${LANG} in + bg*) _W_countrymsg="Вашият IP адрес е от Русия. Ако възникне грешка със сертификата по време на изтеглянето, моля, рестартирайте с '--torify' или изтеглете файловете ръчно, например с VPN." ;; ru*) _W_countrymsg="Скрипт определил, что ваш IP-адрес принадлежит России. Если во время загрузки файлов вы увидите ошибки несоответствия сертификата, перезапустите скрипт с опцией '--torify' или скачайте файлы вручную, например, используя VPN." ;; pl*) _W_countrymsg="Wykryto, że twój adres IP należy do Rosji. W wypadku problemów z pobieraniem, uruchom z parametrem '--torify' lub pobierz plik manualnie, np. z użyciem VPN." ;; *) _W_countrymsg="Your IP address has been determined to belong to Russia. If you encounter a certificate error while downloading, please relaunch with the '--torify' option, or download files manually, for instance using VPN." ;; @@ -3177,9 +3108,10 @@ winetricks_latest_version_check() # Check that $latest_version is an actual number in case github is down if ! echo "${latest_version}" | grep -q -E "[0-9]{8}" || [ -z "${latest_version}" ] ; then case ${LANG} in + bg*) w_warn "Github не работи? Версия ${latest_version} не е валидна" ;; pl*) w_warn "GitHub nie działa? Wersja '${latest_version}' nie wydaje się być prawdiłową wersją" ;; pt*) w_warn "Github offline? versão '${latest_version}' não parece uma versão válida" ;; - ru*) w_warn "Отсутствует подключение к Github? версия '${latest_version}' может быть неактуальной" ;; + ru*) w_warn "Отсутствует подключение к Github? Версия '${latest_version}' может быть неактуальной" ;; zh_CN*) w_warn "GitHub 无法访问?${latest_version} 似乎不是个有效的版本号。" ;; zh_TW*|zh_HK*) w_warn "GitHub 宕機了?${latest_version} 似乎不是個有效的版本號。" ;; *) w_warn "Github down? version '${latest_version}' doesn't appear to be a valid version" ;; @@ -3197,6 +3129,10 @@ winetricks_latest_version_check() winetricks_selfupdate else case ${LANG} in + bg*) + w_warn "Използвате winetricks-${WINETRICKS_VERSION}, последната версия е winetricks-${latest_version}!" + w_warn "Обновете Вашата версия с пакетния мениджър на дистрибуцията, --self-update или ръчно." + ;; pl*) w_warn "Korzystasz z winetricks-${WINETRICKS_VERSION}, a najnowszą wersją winetricks-${latest_version}!" w_warn "Zalecana jest aktualizacja z użyciem menedżera pakietów Twojej dystrybucji, --self-update lub ręczna aktualizacja." @@ -3206,8 +3142,8 @@ winetricks_latest_version_check() w_warn "Você pode atualizar com o sistema de atualizações da sua distribuição, --self-update, ou manualmente." ;; ru*) - w_warn "Запущен winetricks-${WINETRICKS_VERSION}, последняя версия winetricks-${latest_version}!" - w_warn "Вы можете ее обновить с помощью менеджера пакетов, --self-update или вручную." + w_warn "Запущен winetricks-${WINETRICKS_VERSION}, последняя версия: winetricks-${latest_version}!" + w_warn "Вы можете выполнить обновление с помощью менеджера пакетов, параметра --self-update или вручную." ;; zh_CN*) w_warn "你正在使用 winetricks-${WINETRICKS_VERSION},最新版本是 winetricks-${latest_version}!" @@ -3384,13 +3320,22 @@ winetricks_get_prefix_var() winetricks_prefixmenu() { case ${LANG} in - ru*) _W_msg_title="Winetricks - выберите путь wine (wineprefix)" + bg*) _W_msg_title="Winetricks - изберете действие" + _W_msg_body='Какво да бъде?' + _W_msg_apps='Инсталиране на приложение' + _W_msg_benchmarks='Инсталиране на еталонен тест' + _W_msg_default="Избиране на папката по подразбиране" + _W_msg_mkprefix="Създаване на нова папка" + _W_msg_unattended0="Изключване на автоматичното инсталиране" + _W_msg_unattended1="Включване на автоматичното инсталиране" + _W_msg_help="Отваряне на помощта" + ;; + ru*) _W_msg_title="Winetricks - выберите путь wine (префикс)" _W_msg_body='Что вы хотите сделать?' _W_msg_apps='Установить программу' - _W_msg_games='Установить игру' _W_msg_benchmarks='Установить приложение для оценки производительности' - _W_msg_default="Выберите путь для wine по умолчанию" - _W_msg_mkprefix="Создать новый путь wine" + _W_msg_default="Использовать префикс по умолчанию" + _W_msg_mkprefix="Создать новый префикс wine" _W_msg_unattended0="Отключить автоматическую установку" _W_msg_unattended1="Включить автоматическую установку" _W_msg_help="Просмотр справки (в веб-браузере)" @@ -3398,7 +3343,6 @@ winetricks_prefixmenu() uk*) _W_msg_title="Winetricks - виберіть wineprefix" _W_msg_body='Що Ви хочете зробити?' _W_msg_apps='Встановити додаток' - _W_msg_games='Встановити гру' _W_msg_benchmarks='Встановити benchmark' _W_msg_default="Вибрати wineprefix за замовчуванням" _W_msg_mkprefix="створити новий wineprefix" @@ -3409,7 +3353,6 @@ winetricks_prefixmenu() zh_CN*) _W_msg_title="Winetricks - 择一 Wine 容器" _W_msg_body='君欲何为?' _W_msg_apps='安装一个 Windows 应用' - _W_msg_games='安装一个游戏' _W_msg_benchmarks='安装一个基准测试软件' _W_msg_default="选择默认的 Wine 容器" _W_msg_mkprefix="创建新的 Wine 容器" @@ -3420,7 +3363,6 @@ winetricks_prefixmenu() zh_TW*|zh_HK*) _W_msg_title="Winetricks - 取一 Wine 容器" _W_msg_body='君欲何為?' _W_msg_apps='安裝一個 Windows 應用' - _W_msg_games='安裝一個遊戲' _W_msg_benchmarks='安裝一個基准測試軟體' _W_msg_default="選取預設的 Wine 容器" _W_msg_mkprefix="建立新的 Wine 容器" @@ -3431,7 +3373,6 @@ winetricks_prefixmenu() de*) _W_msg_title="Winetricks - wineprefix auswählen" _W_msg_body='Was möchten Sie tun?' _W_msg_apps='Ein Programm installieren' - _W_msg_games='Ein Spiel installieren' _W_msg_benchmarks='Einen Benchmark-Test installieren' _W_msg_default="Standard wineprefix auswählen" _W_msg_mkprefix="Neuen wineprefix erstellen" @@ -3442,7 +3383,6 @@ winetricks_prefixmenu() pl*) _W_msg_title="Winetricks - wybierz prefiks Wine" _W_msg_body='Co chcesz zrobić?' _W_msg_apps='Zainstalować aplikację' - _W_msg_games='Zainstalować grę' _W_msg_benchmarks='Zainstalować program sprawdzający wydajność komputera' _W_msg_default="Wybrać domyślny prefiks Wine" _W_msg_mkprefix="Stwórz nowy prefiks Wine" @@ -3453,7 +3393,6 @@ winetricks_prefixmenu() pt*) _W_msg_title="Winetricks - Escolha um wineprefix" _W_msg_body='O que você quer fazer?' _W_msg_apps='Instalar um programa' - _W_msg_games='Instalar um jogo' _W_msg_benchmarks='Instalar um teste de desempenho/benchmark' _W_msg_default="Selecionar o prefixo padrão wineprefix" _W_msg_mkprefix="Criar novo prefixo wineprefix" @@ -3464,7 +3403,6 @@ winetricks_prefixmenu() *) _W_msg_title="Winetricks - choose a wineprefix" _W_msg_body='What do you want to do?' _W_msg_apps='Install an application' - _W_msg_games='Install a game' _W_msg_benchmarks='Install a benchmark' _W_msg_default="Select the default wineprefix" _W_msg_mkprefix="Create new wineprefix" @@ -3473,6 +3411,7 @@ winetricks_prefixmenu() _W_msg_help="View help" ;; esac + case "${W_OPT_UNATTENDED}" in 1) _W_cmd_unattended=attended; _W_msg_unattended="${_W_msg_unattended0}" ;; *) _W_cmd_unattended=unattended; _W_msg_unattended="${_W_msg_unattended1}" ;; @@ -3494,7 +3433,6 @@ winetricks_prefixmenu() FALSE help '${_W_msg_help}' \ FALSE apps '${_W_msg_apps}' \ FALSE benchmarks '${_W_msg_benchmarks}' \ - FALSE games '${_W_msg_games}' \ TRUE main '${_W_msg_default}' \ FALSE mkprefix '${_W_msg_mkprefix}' \ " \ @@ -3510,6 +3448,7 @@ winetricks_prefixmenu() _W_msg_name="${p}" fi case ${LANG} in + bg*) printf %s " FALSE prefix='${p}' 'Изберете ${_W_msg_name}' " ;; zh_CN*) printf %s " FALSE prefix='${p}' '选择管理 ${_W_msg_name}' " ;; zh_TW*|zh_HK*) printf %s " FALSE prefix='${p}' '選擇管理 ${_W_msg_name}' " ;; de*) printf %s " FALSE prefix='${p}' '${_W_msg_name} auswählen' " ;; @@ -3532,7 +3471,6 @@ winetricks_prefixmenu() --separate-output \ --radiolist '${_W_msg_body}' \ help '${_W_msg_help}' off \ - games '${_W_msg_games}' off \ benchmarks '${_W_msg_benchmarks}' off \ apps '${_W_msg_apps}' off \ main '${_W_msg_default}' on \ @@ -3564,6 +3502,10 @@ winetricks_mkprefixmenu() { case ${LANG} in # TODO: translate to other languages + bg*) _W_msg_title="Winetricks - създайте нова папка" + _W_msg_name="Наименование" + _W_msg_arch="Архитектура" + ;; de) _W_msg_title="Winetricks - Neues Wineprefix erstellen" _W_msg_name="Name" _W_msg_arch="Architektur" @@ -3601,6 +3543,22 @@ winetricks_mkprefixmenu() winetricks_mainmenu() { case ${LANG} in + bg*) _W_msg_title="Winetricks - текущата папка е \"${WINEPREFIX}\"" + _W_msg_body='Какво да бъде?' + _W_msg_dlls="Инсталиране на DLL файл или компонент" + _W_msg_fonts='Инсталиране на шрифт' + _W_msg_settings='Промяна на настройките' + _W_msg_winecfg='Стартиране на winecfg' + _W_msg_regedit='Стартиране на regedit' + _W_msg_taskmgr='Стартиране на taskmgr' + _W_msg_explorer='Стартиране на explorer' + _W_msg_uninstaller='Стартиране на uninstaller' + _W_msg_winecmd='Стартиране на терминала' + _W_msg_wine_misc_exe='Стартиране на изпълним файл (.exe/.msi/.msu)' + _W_msg_shell='Стартиране на терминала (за отстраняване на неизправности)' + _W_msg_folder='Търсене на файлове' + _W_msg_annihilate="Изтриване на ВСИЧКИ ДАННИ И ПРИЛОЖЕНИЯ В ТАЗИ ПАПКА" + ;; da*) _W_msg_title="Vælg en pakke-kategori - Nuværende præfiks er \"${WINEPREFIX}\"" _W_msg_body='Hvad ønsker du at gøre?' _W_msg_dlls="Install a Windows DLL" @@ -3612,6 +3570,7 @@ winetricks_mainmenu() _W_msg_explorer='Run explorer' _W_msg_uninstaller='Run uninstaller' _W_msg_winecmd='Run a Wine cmd shell' + _W_msg_wine_misc_exe='Run an arbitrary executable (.exe/.msi/.msu)' _W_msg_shell='Run a commandline shell (for debugging)' _W_msg_folder='Browse files' _W_msg_annihilate="Delete ALL DATA AND APPLICATIONS INSIDE THIS WINEPREFIX" @@ -3627,6 +3586,7 @@ winetricks_mainmenu() _W_msg_explorer='explorer starten' _W_msg_uninstaller='uninstaller starten' _W_msg_winecmd='Starten Sie Wine cmd' + _W_msg_wine_misc_exe='Run an arbitrary executable (.exe/.msi/.msu)' _W_msg_shell='Eine Kommandozeile zum debuggen starten' _W_msg_folder='Ordner durchsuchen' _W_msg_annihilate="ALLE DATEIEN UND PROGRAMME IN DIESEM WINEPREFIX Löschen" @@ -3642,6 +3602,7 @@ winetricks_mainmenu() _W_msg_explorer='Uruchomić explorer' _W_msg_uninstaller='Uruchomić program odinstalowujący' _W_msg_winecmd='Uruchomić Wine cmd' + _W_msg_wine_misc_exe='Run an arbitrary executable (.exe/.msi/.msu)' _W_msg_shell='Uruchomić powłokę wiersza poleceń (dla debugowania)' _W_msg_folder='Przeglądać pliki' _W_msg_annihilate="Usuńąć WSZYSTKIE DANE I APLIKACJE WEWNĄTRZ TEGO PREFIKSU WINE" @@ -3657,24 +3618,26 @@ winetricks_mainmenu() _W_msg_explorer='Executar explorer' _W_msg_uninstaller='Executar desinstalador' _W_msg_winecmd='Executar Wine cmd' + _W_msg_wine_misc_exe='Run an arbitrary executable (.exe/.msi/.msu)' _W_msg_shell='Executar linha de comandos shell (para depuração)' _W_msg_folder='Gerenciar arquivos' _W_msg_annihilate="Apagar TODOS OS DADOS E APLICATIVOS DENTRO DESTE WINEPREFIX" ;; - ru*) _W_msg_title="Winetricks - текущий путь для wine (wineprefix) \"${WINEPREFIX}\"" - _W_msg_body='Что вы хотите сделать с этим wineprefix?' + ru*) _W_msg_title="Winetricks — текущий префикс: \"${WINEPREFIX}\"" + _W_msg_body='Что вы хотите сделать с этим префиксом?' _W_msg_dlls="Установить библиотеку DLL или компонент Windows" _W_msg_fonts='Установить шрифт' _W_msg_settings='Поменять настройки' _W_msg_winecfg='Запустить winecfg (редактор настроек wine)' _W_msg_regedit='Запустить regedit (редактор реестра)' _W_msg_taskmgr='Запустить taskmgr (менеджер задач)' - _W_msg_explorer='Запустить explorer' - _W_msg_uninstaller='Запустить uninstaller (деинсталлятор)' - _W_msg_winecmd='Запустить винную команду' + _W_msg_explorer='Запустить explorer (Проводник)' + _W_msg_uninstaller='Запустить uninstaller (установка и удаление программ)' + _W_msg_winecmd='Запустить wine cmd (командную строку)' + _W_msg_wine_misc_exe='Run an arbitrary executable (.exe/.msi/.msu)' _W_msg_shell='Запустить графический терминал (для отладки)' - _W_msg_folder='Проводник файлов' - _W_msg_annihilate="Удалить ВСЕ ДАННЫЕ И ПРИЛОЖЕНИЯ В ЭТОМ WINEPREFIX" + _W_msg_folder='Запустить winefile (проводник файлов)' + _W_msg_annihilate="Удалить ВСЕ ДАННЫЕ И ПРИЛОЖЕНИЯ в этом префиксе" ;; uk*) _W_msg_title="Winetricks - поточний prefix \"${WINEPREFIX}\"" _W_msg_body='Що Ви хочете зробити для цього wineprefix?' @@ -3687,6 +3650,7 @@ winetricks_mainmenu() _W_msg_explorer='Запустити explorer' _W_msg_uninstaller='Встановлення/видалення програм' _W_msg_winecmd='Запустіть оболонку Wine cmd' + _W_msg_wine_misc_exe='Run an arbitrary executable (.exe/.msi/.msu)' _W_msg_shell='Запуск командної оболонки (для налагодження)' _W_msg_folder='Перегляд файлів' _W_msg_annihilate="Видалити УСІ ДАНІ ТА ПРОГРАМИ З ЦЬОГО WINEPREFIX" @@ -3702,6 +3666,7 @@ winetricks_mainmenu() _W_msg_explorer='运行资源管理器' _W_msg_uninstaller='运行卸载程序' _W_msg_winecmd='运行 Wine cmd' + _W_msg_wine_misc_exe='Run an arbitrary executable (.exe/.msi/.msu)' _W_msg_shell='运行命令提示窗口 (作为调试)' _W_msg_folder='浏览容器中的文件' _W_msg_annihilate="删除容器中所有数据和应用程序" @@ -3717,6 +3682,7 @@ winetricks_mainmenu() _W_msg_explorer='執行檔案總管' _W_msg_uninstaller='執行解除安裝程式' _W_msg_winecmd='運行 Wine cmd' + _W_msg_wine_misc_exe='Run an arbitrary executable (.exe/.msi/.msu)' _W_msg_shell='執行命令提示視窗 (作為偵錯)' _W_msg_folder='瀏覽容器中的檔案' _W_msg_annihilate="刪除容器中所有資料和應用程式" @@ -3732,6 +3698,7 @@ winetricks_mainmenu() _W_msg_explorer='Run explorer' _W_msg_uninstaller='Run uninstaller' _W_msg_winecmd='Run a Wine cmd shell' + _W_msg_wine_misc_exe='Run an arbitrary executable (.exe/.msi/.msu)' _W_msg_shell='Run a commandline shell (for debugging)' _W_msg_folder='Browse files' _W_msg_annihilate="Delete ALL DATA AND APPLICATIONS INSIDE THIS WINEPREFIX" @@ -3760,7 +3727,8 @@ winetricks_mainmenu() FALSE taskmgr '${_W_msg_taskmgr}' \ FALSE explorer '${_W_msg_explorer}' \ FALSE uninstaller '${_W_msg_uninstaller}' \ - FALSE cmd '${_W_msg_winecmd}' \ + FALSE winecmd '${_W_msg_winecmd}' \ + FALSE wine_misc_exe '${_W_msg_wine_misc_exe}' \ FALSE shell '${_W_msg_shell}' \ FALSE folder '${_W_msg_folder}' \ FALSE annihilate '${_W_msg_annihilate}' \ @@ -3784,21 +3752,25 @@ winetricks_mainmenu() taskmgr "${_W_msg_taskmgr}" off \ explorer "${_W_msg_explorer}" off \ uninstaller "${_W_msg_uninstaller}" off \ - cmd "${_W_msg_winecmd}" off \ + winecmd "${_W_msg_winecmd}" off \ + wine_misc_exe "${_W_msg_wine_misc_exe}" off \ shell "${_W_msg_shell}" off \ folder "${_W_msg_folder}" off \ annihilate "${_W_msg_annihilate}" off \ - ${_W_cmd_unattended} "${_W_msg_unattended}" off \ + "${_W_cmd_unattended}" "${_W_msg_unattended}" off \ ;; esac - unset _W_msg_body _W_msg_title _W_msg_apps _W_msg_benchmarks _W_msg_dlls _W_msg_games _W_msg_settings + unset _W_msg_body _W_msg_title _W_msg_apps _W_msg_benchmarks _W_msg_dlls _W_msg_settings } winetricks_settings_menu() { # FIXME: these translations should really be centralized/reused: case ${LANG} in + bg*) _W_msg_title="Winetricks - текущата папка е \"${WINEPREFIX}\"" + _W_msg_body='Какво искате да промените?' + ;; da*) _W_msg_title="Vælg en pakke - Nuværende præfiks er \"${WINEPREFIX}\"" _W_msg_body='Which settings would you like to change?' ;; @@ -3811,7 +3783,7 @@ winetricks_settings_menu() pt*) _W_msg_title="Winetricks - o prefixo atual é \"${WINEPREFIX}\"" _W_msg_body='Quais configurações você gostaria de alterar?' ;; - ru*) _W_msg_title="Winetricks - текущий путь wine (wineprefix) \"${WINEPREFIX}\"" + ru*) _W_msg_title="Winetricks - текущий префикс: \"${WINEPREFIX}\"" _W_msg_body='Какие настройки вы хотите изменить?' ;; uk*) _W_msg_title="Winetricks - поточний prefix \"${WINEPREFIX}\"" @@ -3831,6 +3803,18 @@ winetricks_settings_menu() case ${WINETRICKS_GUI} in zenity) case ${LANG} in + bg*) printf %s "zenity \ + --title '${_W_msg_title}' \ + --text '${_W_msg_body}' \ + --list \ + --checklist \ + --column '' \ + --column Настройка \ + --column Описание \ + --height ${WINETRICKS_MENU_HEIGHT} \ + --width ${WINETRICKS_MENU_WIDTH} \ + " + ;; da*) printf %s "zenity \ --title '${_W_msg_title}' \ --text '${_W_msg_body}' \ @@ -3951,11 +3935,18 @@ winetricks_settings_menu() # Begin 'title' strings localization code # shellcheck disable=SC2154 case ${LANG} in + bg*) + case "${title_bg}" in + "") ;; + *) title="${title_bg}";; + esac + ;; uk*) case "${title_uk}" in "") ;; *) title="${title_uk}";; esac + ;; esac # End of code @@ -3985,6 +3976,10 @@ winetricks_settings_menu() winetricks_showmenu() { case ${LANG} in + bg*) _W_msg_title="Winetricks - текущата папка е \"${WINEPREFIX}\"" + _W_msg_body='Какво искате да инсталирате?' + _W_cached="кеширано" + ;; da*) _W_msg_title='Vælg en pakke' _W_msg_body='Vilken pakke vil du installere?' _W_cached="cached" @@ -4001,8 +3996,8 @@ winetricks_showmenu() _W_msg_body='Quais pacotes você gostaria de instalar?' _W_cached="em cache" ;; - ru*) _W_msg_title="Winetricks - текущий путь wine (wineprefix) \"${WINEPREFIX}\"" - _W_msg_body='Какое приложение(я) вы хотите установить?' + ru*) _W_msg_title="Winetricks - текущий префикс: \"${WINEPREFIX}\"" + _W_msg_body='Какое приложение вы хотите установить?' _W_cached="в кэше" ;; uk*) _W_msg_title="Winetricks - поточний prefix \"${WINEPREFIX}\"" @@ -4027,6 +4022,22 @@ winetricks_showmenu() case ${WINETRICKS_GUI} in zenity) case ${LANG} in + bg*) printf %s "zenity \ + --title '${_W_msg_title}' \ + --text '${_W_msg_body}' \ + --list \ + --checklist \ + --column '' \ + --column Пакет \ + --column Наименование \ + --column Издател \ + --column Година \ + --column Източник \ + --column Състояние \ + --height ${WINETRICKS_MENU_HEIGHT} \ + --width ${WINETRICKS_MENU_WIDTH} \ + " + ;; da*) printf %s "zenity \ --title '${_W_msg_title}' \ --text '${_W_msg_body}' \ @@ -4189,6 +4200,11 @@ winetricks_showmenu() installed=TRUE echo "${code}" >> "${WINETRICKS_WORKDIR}"/installed.txt fi + if [ "${#title}" -gt 100 ]; then + # Small hysteresis of a few characters to not shorten descriptions that are close to the limit + title=$(printf "%s" "${title}" | head -c 95) + title="${title} ..." + fi printf %s " ${installed} \ ${code} \ \"${title}\" \ @@ -4295,7 +4311,7 @@ winetricks_is_installed() *) # Compute wineprefix for this app case "${_W_category}-${WINETRICKS_OPT_SHAREDPREFIX}" in - apps-0|benchmarks-0|games-0) + apps-0|benchmarks-0) _W_prefix="${W_PREFIXES_ROOT}/$1" ;; *) @@ -4391,6 +4407,7 @@ winetricks_list_all() esac case ${LANG} in + bg*) _W_cached="кеширано" ; _W_download="за изтегляне" ;; da*) _W_cached="cached" ; _W_download="kan hentes" ;; de*) _W_cached="gecached" ; _W_download="herunterladbar";; pl*) _W_cached="zarchiwizowane" ; _W_download="do pobrania" ;; @@ -4600,18 +4617,18 @@ winetricks_cache_iso() winetricks_detect_optical_drive # Horrible hack for Gentoo - make sure we can read from the drive - if ! test -r ${WINETRICKS_DEV}; then + if ! test -r "${WINETRICKS_DEV}"; then case "${WINETRICKS_SUDO}" in - gksu*|kdesudo) ${WINETRICKS_SUDO} "chmod 666 ${WINETRICKS_DEV}" ;; + gksu*|kdesudo) ${WINETRICKS_SUDO} chmod 666 "${WINETRICKS_DEV}" ;; kdesu) ${WINETRICKS_SUDO} -c "chmod 666 ${WINETRICKS_DEV}" ;; - *) ${WINETRICKS_SUDO} chmod 666 ${WINETRICKS_DEV} ;; + *) ${WINETRICKS_SUDO} chmod 666 "${WINETRICKS_DEV}" ;; esac fi while true; do # Wait for user to insert disc. # Sleep long to make it less likely to close the drive during insertion. - while ! dd if=${WINETRICKS_DEV} of=/dev/null count=1; do + while ! dd if="${WINETRICKS_DEV}" of=/dev/null count=1; do sleep 5 done @@ -4620,9 +4637,10 @@ winetricks_cache_iso() break fi # Otherwise try and read it straight from unmounted volume - _W_volname=$(winetricks_volname ${WINETRICKS_DEV}) + _W_volname="$(winetricks_volname "${WINETRICKS_DEV}")" if test "${_W_expected_volname}" != "${_W_volname}"; then case ${LANG} in + bg*) w_warn "Дискът [${_W_volname}] е неправилен. Моля, използвайте [${_W_expected_volname}]" ;; da*) w_warn "Forkert disk [${_W_volname}] indsat. Indsæt venligst disken [${_W_expected_volname}]" ;; de*) w_warn "Falsche Disk [${_W_volname}] eingelegt. Bitte legen Sie Disk [${_W_expected_volname}] ein!" ;; pl*) w_warn "Umieszczono zły dysk [${_W_volname}]. Proszę włożyć dysk [${_W_expected_volname}]" ;; @@ -4642,9 +4660,9 @@ winetricks_cache_iso() # Copy disc to .iso file, display progress every 5 seconds # Use conv=noerror,sync to replace unreadable blocks with zeroes - case ${WINETRICKS_OPT_DD} in + case "${WINETRICKS_OPT_DD}" in dd) - ${WINETRICKS_OPT_DD} if=${WINETRICKS_DEV} of="${W_CACHE}"/temp.iso bs=2048 conv=noerror,sync & + "${WINETRICKS_OPT_DD}" if="${WINETRICKS_DEV}" of="${W_CACHE}"/temp.iso bs=2048 conv=noerror,sync & WINETRICKS_DD_PID=$! ;; ddrescue) @@ -4652,7 +4670,7 @@ winetricks_cache_iso() w_die "Please install ddrescue first." fi - ${WINETRICKS_OPT_DD} -v -b 2048 ${WINETRICKS_DEV} "${W_CACHE}"/temp.iso & + "${WINETRICKS_OPT_DD}" -v -b 2048 "${WINETRICKS_DEV}" "${W_CACHE}"/temp.iso & WINETRICKS_DD_PID=$! ;; esac @@ -4679,7 +4697,7 @@ winetricks_cache_iso() mv "${W_CACHE}"/temp.iso "${WINETRICKS_IMG}" - eject ${WINETRICKS_DEV} || true # punt if eject not found (as on cygwin) + eject "${WINETRICKS_DEV}" || true # punt if eject not found (as on cygwin) } winetricks_load_vcdmount() @@ -4812,16 +4830,16 @@ _EOF_ # WINETRICKS_IMG may contain spaces and needs to be quoted case "${WINETRICKS_SUDO}" in gksu*|kdesudo) - w_try ${WINETRICKS_SUDO} "mkdir -p ${W_ISO_MOUNT_ROOT}" - w_try ${WINETRICKS_SUDO} "mount -o ro,loop,uid=${_W_USERID},unhide '${WINETRICKS_IMG}' ${W_ISO_MOUNT_ROOT}" + w_try "${WINETRICKS_SUDO}" "mkdir -p ${W_ISO_MOUNT_ROOT}" + w_try "${WINETRICKS_SUDO}" "mount -o ro,loop,uid=${_W_USERID},unhide '${WINETRICKS_IMG}' ${W_ISO_MOUNT_ROOT}" ;; kdesu) - w_try ${WINETRICKS_SUDO} -c "mkdir -p ${W_ISO_MOUNT_ROOT}" - w_try ${WINETRICKS_SUDO} -c "mount -o ro,loop,uid=${_W_USERID},unhide '${WINETRICKS_IMG}' ${W_ISO_MOUNT_ROOT}" + w_try "${WINETRICKS_SUDO}" -c "mkdir -p ${W_ISO_MOUNT_ROOT}" + w_try "${WINETRICKS_SUDO}" -c "mount -o ro,loop,uid=${_W_USERID},unhide '${WINETRICKS_IMG}' ${W_ISO_MOUNT_ROOT}" ;; *) - w_try ${WINETRICKS_SUDO} mkdir -p "${W_ISO_MOUNT_ROOT}" - w_try ${WINETRICKS_SUDO} mount -o ro,loop,uid="${_W_USERID}",unhide "${WINETRICKS_IMG}" "${W_ISO_MOUNT_ROOT}" + w_try "${WINETRICKS_SUDO}" mkdir -p "${W_ISO_MOUNT_ROOT}" + w_try "${WINETRICKS_SUDO}" mount -o ro,loop,uid="${_W_USERID}",unhide "${WINETRICKS_IMG}" "${W_ISO_MOUNT_ROOT}" ;; esac @@ -4900,6 +4918,7 @@ winetricks_mount_real_volume() # Wait for user to insert disc. case ${LANG} in + bg*) _W_mountmsg="Моля, използвайте ${_W_expected_volname} (изисква се от пакета ${W_PACKAGE})" ;; da*)_W_mountmsg="Indsæt venligst disken '${_W_expected_volname}' (krævet af pakken '${W_PACKAGE}')" ;; de*)_W_mountmsg="Bitte Disk '${_W_expected_volname}' einlegen (für Paket '${W_PACKAGE}')" ;; pl*) _W_mountmsg="Proszę włożyć dysk '${_W_expected_volname}' (potrzebny paczce '${W_PACKAGE}')" ;; @@ -4950,7 +4969,7 @@ winetricks_cleanup() fi test "${WINETRICKS_CACHE_SYMLINK}" && rm -f "${WINETRICKS_CACHE_SYMLINK}" - if [ "${W_OPT_NOCLEAN}" = 1 ]; then + if [ -z "${W_OPT_NOCLEAN}" ]; then rm -rf "${WINETRICKS_WORKDIR}" rm -rf "${W_TMP_EARLY}" rm -rf "${WINEPREFIX}/wrapper.cfg" @@ -5008,7 +5027,7 @@ winetricks_set_wineprefix() fi export WINEPREFIX - w_try mkdir -p "$(dirname "${WINEPREFIX}")" + w_try_mkdir "$(dirname "${WINEPREFIX}")" case "${W_PLATFORM}" in windows_cmd) @@ -5029,17 +5048,42 @@ winetricks_set_wineprefix() # Make sure the prefix is initialized: w_try winetricks_early_wine cmd /c "echo init" > /dev/null 2>&1 + if [ "$(uname -s)" = "Darwin" ] && [ "$(uname -m)" = "arm64" ] && grep -q "Bad CPU type in executable" "${W_TMP_EARLY}"/early_wine.err.txt; then + # FIXME: this should really go in w_warn()/winetricks_detect_gui() + if [ -z "${W_OPT_UNATTENDED}" ]; then + osascript -e 'tell app "System Events" to display dialog "Wine failed to run with the error \"Bad CPU type in executable.\" You probably need to install Rosetta2"' + fi + w_die "Wine failed to run with the error 'Bad CPU type in executable'. You probably need to install Rosetta2" + fi + # Win(e) 32/64? # Using the variable W_SYSTEM32_DLLS instead of SYSTEM32 because some stuff does go under system32 for both arch's # e.g., spool/drivers/color if test -d "${W_DRIVE_C}/windows/syswow64"; then + # Check the bitness of wineserver + wine binary, used later to determine if we're on a WOW setup (no wine64) + # https://github.com/Winetricks/winetricks/issues/2030 + WINESERVER_BIN="$(which "${WINESERVER}")" + _W_wineserver_binary_arch="$(winetricks_get_file_arch "${WINESERVER_BIN}")" + WINE_BIN="$(which "${WINE}")" + _W_wine_binary_arch="$(winetricks_get_file_arch "${WINE_BIN}")" + + # determine wow64 type (new/old) + # FIXME: check what upstream is calling them + if [ "${_W_wineserver_binary_arch}" = "${_W_wine_binary_arch}" ]; then + _W_wow64_style="new" + else + _W_wow64_style="classic" + fi + # Probably need fancier handling/checking, but for a basic start: # Note 'wine' may be named 'wine-stable'/'wine-staging'/etc.): # WINE64 = wine64, available on 64-bit prefixes - # WINE_ARCH = the native wine for the prefix (wine for 32-bit, wine64 for 64-bit) + # WINE_ARCH = the native wine for the prefix (wine for 32-bit or new wow mode, wine64 for classic wow mode) # WINE_MULTI = generic wine, new name if [ -n "${WINE64}" ]; then true + elif [ "${_W_wow64_style}" = "new" ]; then + WINE64="${WINE}" elif [ "${WINE%??}64" = "${WINE}" ]; then WINE64="${WINE}" elif command -v "${WINE}64" >/dev/null 2>&1; then @@ -5103,13 +5147,19 @@ winetricks_set_wineprefix() if [ "${_W_no_win64_warnings}" = 0 ]; then case ${LANG} in + bg*) w_warn "Използвате 64-битова папка. Повечето програми са за 32-битова архитектура. Ако възникнат проблеми, моля, използвайте 32-битова папка, преди да ги докладвате." ;; ru*) w_warn "Вы используете 64-битный WINEPREFIX. Важно: многие ветки устанавливают только 32-битные версии пакетов. Если у вас возникли проблемы, пожалуйста, проверьте еще раз на чистом 32-битном WINEPREFIX до отправки отчета об ошибке." ;; pt*) w_warn "Você está usando um WINEPREFIX de 64-bit. Observe que muitos casos instalam apenas versões de pacotes de 32-bit. Se você encontrar problemas, teste novamente em um WINEPREFIX limpo de 32-bit antes de relatar um bug." ;; *) w_warn "You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug." ;; esac + + if [ "${_W_wow64_style}" = "new" ]; then + w_warn "You apppear to be using Wine's new wow64 mode. Note that this is EXPERIMENTAL and not yet fully supported. If reporting an issue, be sure to mention this." + fi fi else + _W_wow64_style="none" WINE64="false" WINE_ARCH="${WINE}" WINE_MULTI="${WINE}" @@ -5144,7 +5194,7 @@ winetricks_set_wineprefix() W_APPDATA_UNIX="$(w_pathconv -u "${W_APPDATA_WIN}")" case "${W_APPDATA_WIN}" in - "") w_info "$(winetricks_print_wineprefix_info)" ; w_die "${WINE} cmd.exe /c echo '%AppData%' returned empty string, error message \"$(cat ${W_TMP_EARLY}/early_wine.err.txt)\" ";; + "") w_info "$(winetricks_print_wineprefix_info)" ; w_die "${WINE} cmd.exe /c echo '%AppData%' returned empty string, error message \"$(cat "${W_TMP_EARLY}"/early_wine.err.txt)\" ";; %*) w_info "$(winetricks_print_wineprefix_info)" ; w_die "${WINE} cmd.exe /c echo '%AppData%' returned unexpanded string '${W_PROGRAMS_WIN}' ... this can be caused by a corrupt wineprefix (\`wineboot -u\` may help), by an old wine, or by not owning ${WINEPREFIX}" ;; esac @@ -5168,7 +5218,7 @@ winetricks_set_wineprefix() test "${WINETRICKS_CACHE_SYMLINK}" && rm -f "${WINETRICKS_CACHE_SYMLINK}" for letter in y x w v u t s r q p o n m; do if ! test -d "${WINEPREFIX}"/dosdevices/${letter}:; then - mkdir -p "${WINEPREFIX}"/dosdevices + w_try_mkdir "${WINEPREFIX}"/dosdevices WINETRICKS_CACHE_SYMLINK="${WINEPREFIX}"/dosdevices/${letter}: ln -sf "${W_CACHE}" "${WINETRICKS_CACHE_SYMLINK}" break @@ -5192,7 +5242,7 @@ winetricks_set_wineprefix() else W_FONTSDIR_UNIX="${W_WINDIR_UNIX}"/Fonts fi - mkdir -p "${W_FONTSDIR_UNIX}" + w_try_mkdir "${W_FONTSDIR_UNIX}" # Unset WINEARCH which might be set from winetricks_set_winearch(). @@ -5206,6 +5256,7 @@ winetricks_annihilate_wineprefix() w_skip_windows "No wineprefix to delete on windows" && return case ${LANG} in + bg*) w_askpermission "Изтриване на ${WINEPREFIX}, нейните приложения, икони и менюта?" ;; uk*) w_askpermission "Бажаєте видалити '${WINEPREFIX}'?" ;; pl*) w_askpermission "Czy na pewno chcesz usunąć prefiks ${WINEPREFIX} i wszystkie jego elementy?" ;; pt*) w_askpermission "Apagar ${WINEPREFIX}, Estes apps, ícones e ítens do menu?" ;; @@ -5258,9 +5309,9 @@ winetricks_init() WINETRICKS_METADATA="${WINETRICKS_WORKDIR}/metadata" # The list of categories is also hardcoded in winetricks_mainmenu() :-( - WINETRICKS_CATEGORIES="apps benchmarks dlls fonts games settings mkprefix" + WINETRICKS_CATEGORIES="apps benchmarks dlls fonts settings mkprefix" for _W_cat in ${WINETRICKS_CATEGORIES}; do - mkdir -p "${WINETRICKS_METADATA}/${_W_cat}" + w_try_mkdir -q "${WINETRICKS_METADATA}/${_W_cat}" done # Which subdirectory of WINETRICKS_METADATA is currently active (or main, if none) @@ -5319,7 +5370,7 @@ winetricks_init() # Config options are currently opt-in and not required, so not creating the config # directory unless there's demand: WINETRICKS_CONFIG="${XDG_CONFIG_HOME}/winetricks" - #test -d "$WINETRICKS_CONFIG" || mkdir -p "$WINETRICKS_CONFIG" + #test -d "$WINETRICKS_CONFIG" || w_try_mkdir "$WINETRICKS_CONFIG" # Load country code from config file only when "--country=" option is not specified if test -z "${W_COUNTRY}" -a -f "${WINETRICKS_CONFIG}"/country; then @@ -5386,6 +5437,7 @@ winetricks_wine_setup() "${WINE}server" \ "$(command -v wineserver 2> /dev/null)" \ "$(dirname "${WINE}")/server/wineserver" \ + "$(dirname "${WINE}")/wineserver" \ /usr/bin/wineserver-development \ /usr/lib/wine/wineserver \ /usr/lib/i386-kfreebsd-gnu/wine/wineserver \ @@ -5443,10 +5495,10 @@ winetricks_wine_setup() # wine-2.8 _wine_version_stripped="$(echo "${WINETRICKS_WINE_VERSION}" | cut -d ' ' -f1 | sed -e 's/wine-//' -e 's/-rc.*//')" - # If WINE is < 6.0, warn user: - # 6.0 doesn't do what I thought it would - if w_wine_version_in ,5.99 ; then - w_warn "Your version of wine ${_wine_version_stripped} is no longer supported upstream. You should upgrade to 6.x" + # If WINE is < 8.0, warn user: + # 8.0 doesn't do what I thought it would + if w_wine_version_in ,7.99 ; then + w_warn "Your version of wine ${_wine_version_stripped} is no longer supported upstream. You should upgrade to 8.x" fi winetricks_set_wineprefix "$1" @@ -5459,6 +5511,50 @@ winetricks_wine_setup() winetricks_usage() { case ${LANG} in + bg*) + cat <<_EOF_ +Начин на използване: $0 [опции] [команда|глагол|местоположение-на-глагола] ... +Изпълнява глаголите. Всеки глагол инсталира приложение или променя настройка. + +Опции: + --country=CC Променя държавния код (СС) и не засича Вашия IP адрес +-f, --force Не проверява за инсталираните пакети + --gui Показва графична диагностика + --gui=OPT Избира kdialog или zenity (OPT) + --isolate Инсталира всяко приложение или игра в отделна бутилка (ПАПКА) + --self-update Обновява това приложение + --update-rollback Отменя последното обновяване на това приложение +-k, --keep_isos Кешира .iso файловете (позволява инсталация без диск) + --no-clean Не изтрива временните директории (полезно е за отстраняване на неизправности) + --optin Включва докладването за използваните глаголи към разработчиците на Winetricks + --optout Изключва докладването за използваните глаголи към разработчиците на Winetricks +-q, --unattended Не задава въпроси, инсталира автоматично +-r, --ddrescue Повтаря опитите за кеширане на одраскани дискове +-t --torify Стартира изтегляне с torify, ако е налично + --verify Стартира автоматични графични тестове за глаголи, ако е налично +-v, --verbose Изписва всички изпълнени команди +-h, --help Показва това съобщение и излиза +-V, --version Показва версията и излиза + +Команди: +list показва категориите +list-all показва всички категории и техните глаголи +apps list показва глаголите в категория 'приложения' +benchmarks list показва глаголите в категория 'еталонни тестове' +dlls list показва глаголите в категория 'DLL файлове' +fonts list показва глаголите в категория 'шрифтове' +settings list показва глаголите в категория 'настройки' +list-cached показва кешираните-и-готови-за-инсталиране глаголи +list-download показва глаголите, които се изтеглят автоматично +list-manual-download показва глаголите, които се изтеглят от потребителя +list-installed показва инсталираните глаголи +arch=32|64 създава папка с 32 или 64-битова архитектура, тази опция + трябва да бъде зададена преди prefix=foobar и няма да работи + с папката по подразбиране. +prefix=foobar избира ПАПКА=${W_PREFIXES_ROOT}/foobar +annihilate Изтрива ВСИЧКИ ДАННИ И ПРИЛОЖЕНИЯ В ТАЗИ ПАПКА +_EOF_ + ;; da*) cat <<_EOF_ Brug: $0 [tilvalg] [verbum|sti-til-verbum] ... @@ -5487,7 +5583,6 @@ apps list list verbs in category 'applications' benchmarks list list verbs in category 'benchmarks' dlls list list verbs in category 'dlls' fonts list list verbs in category 'fonts' -games list list verbs in category 'games' settings list list verbs in category 'settings' list-cached vis en liste over verber for allerede-hentede installationsprogrammer list-download vis en liste over verber for programmer der kan hentes @@ -5530,7 +5625,6 @@ apps list Verben der Kategorie 'Anwendungen' auflisten benchmarks list Verben der Kategorie 'Benchmarks' auflisten dlls list Verben der Kategorie 'DLLs' auflisten fonts list list verbs in category 'fonts' -games list Verben der Kategorie 'Spiele' auflisten settings list Verben der Kategorie 'Einstellungen' auflisten list-cached Verben für bereits gecachte Installers auflisten list-download Verben für automatisch herunterladbare Anwendungen auflisten @@ -5558,6 +5652,8 @@ Options: --update-rollback Rollback the last self update -k, --keep_isos Cache isos (allows later installation without disc) --no-clean Don't delete temp directories (useful during debugging) + --optin Opt in to reporting which verbs you use to the Winetricks maintainers + --optout Opt out of reporting which verbs you use to the Winetricks maintainers -q, --unattended Don't ask any questions, just install automatically -r, --ddrescue Retry hard when caching scratched discs -t --torify Run downloads under torify, if available @@ -5573,7 +5669,6 @@ apps list list verbs in category 'applications' benchmarks list list verbs in category 'benchmarks' dlls list list verbs in category 'dlls' fonts list list verbs in category 'fonts' -games list list verbs in category 'games' settings list list verbs in category 'settings' list-cached list cached-and-ready-to-install verbs list-download list verbs which download automatically @@ -5656,6 +5751,7 @@ fi winetricks_install_app() { case ${LANG} in + bg*) fail_msg="Инсталирането на пакета $1 е неуспешно" ;; da*) fail_msg="Installationen af pakken $1 fejlede" ;; de*) fail_msg="Installieren von Paket $1 gescheitert" ;; pl*) fail_msg="Niepowodzenie przy instalacji paczki $1" ;; @@ -5786,13 +5882,6 @@ helper_winxpsp3() { filename=$1 - # 2017/03/15: helper was renamed from winxpsp3 to winxpsp3, to match win2k/win7 service pack helpers - # To minimize user impact, renaming directory automagically. - # This could be removed after a transition period (1 year or so): - if [ -d "${W_CACHE}/xpsp3" ] ; then - w_try mv "${W_CACHE}/xpsp3" "${W_CACHE}/winxpsp3" - fi - # Formerly at: # https://www.microsoft.com/en-us/download/details.aspx?id=24 # https://download.microsoft.com/download/d/3/0/d30e32d8-418a-469d-b600-f32ce3edf42d/WindowsXP-KB936929-SP3-x86-ENU.exe @@ -5975,17 +6064,32 @@ load_cmd() w_metadata cnc_ddraw dlls \ title="Reimplentation of ddraw for CnC games" \ - homepage="https://github.com/CnCNet/cnc-ddraw" \ + homepage="https://github.com/FunkyFr3sh/cnc-ddraw" \ publisher="CnCNet" \ year="2021" \ media="download" \ - file1="cnc-ddraw.zip" \ + file1="cnc-ddraw-v6.2.0.0.zip" \ installed_file1="${W_SYSTEM32_DLLS_WIN}/Shaders/readme.txt" load_cnc_ddraw() { # Note: only works if ddraw.ini contains settings for the executable - w_download https://github.com/CnCNet/cnc-ddraw/releases/download/v4.6.0.0/cnc-ddraw.zip 1633d30bc80ecae60db97e881a4c804911e300dcb280d58ea8b8ddda2e1dd1ac + # 2018/12/11 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/1.3.4.0/cnc-ddraw.zip + # 2020/02/03 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/1.3.5.0/cnc-ddraw.zip + # 2021/09/29 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/v4.4.4.0/cnc-ddraw.zip + # 2022/03/27 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/v4.4.7.0/cnc-ddraw.zip + # 2022/09/18 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/v4.4.9.0/cnc-ddraw.zip + # 2022/10/03 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/v4.6.0.0/cnc-ddraw.zip + # 2023/02/08 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/v5.0.0.0/cnc-ddraw.zip + # 2023/08/15 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/v5.6.0.0/cnc-ddraw.zip + # 2023/08/24 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/v5.7.0.0/cnc-ddraw.zip + # 2023/09/26 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/v5.8.0.0/cnc-ddraw.zip + # 2023/10/20 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/v5.9.0.0/cnc-ddraw.zip + # 2023/11/04 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/v6.0.0.0/cnc-ddraw.zip + # 2024/02/03 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/v6.1.0.0d/cnc-ddraw.zip + # 2024/02/21 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/v6.2.0.0/cnc-ddraw.zip + + w_download https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/v6.2.0.0/cnc-ddraw.zip e5677ba52c31ffa93421a16edacff0c4d1f03e107aea6fc860861b43e3356119 cnc-ddraw-v6.2.0.0.zip w_try_unzip "${W_SYSTEM32_DLLS}" "${W_CACHE}/${W_PACKAGE}/${file1}" w_override_dlls native,builtin ddraw @@ -6063,6 +6167,31 @@ load_comdlg32ocx() #---------------------------------------------------------------- w_metadata crypt32 dlls \ + title="MS crypt32" \ + publisher="Microsoft" \ + year="2011" \ + media="download" \ + file1="../win7sp1/windows6.1-KB976932-X64.exe" \ + installed_file1="${W_SYSTEM32_DLLS_WIN}/crypt32.dll" + +load_crypt32() +{ + w_call msasn1 + + helper_win7sp1 x86_microsoft-windows-crypt32-dll_31bf3856ad364e35_6.1.7601.17514_none_5d772bc73c15dfe5/crypt32.dll + w_try_cp_dll "${W_TMP}/x86_microsoft-windows-crypt32-dll_31bf3856ad364e35_6.1.7601.17514_none_5d772bc73c15dfe5/crypt32.dll" "${W_SYSTEM32_DLLS}/crypt32.dll" + + if [ "${W_ARCH}" = "win64" ]; then + helper_win7sp1_x64 amd64_microsoft-windows-crypt32-dll_31bf3856ad364e35_6.1.7601.17514_none_b995c74af473511b/crypt32.dll + w_try_cp_dll "${W_TMP}/amd64_microsoft-windows-crypt32-dll_31bf3856ad364e35_6.1.7601.17514_none_b995c74af473511b/crypt32.dll" "${W_SYSTEM64_DLLS}/crypt32.dll" + fi + + w_override_dlls native crypt32 +} + +#---------------------------------------------------------------- + +w_metadata crypt32_winxp dlls \ title="MS crypt32" \ publisher="Microsoft" \ year="2004" \ @@ -6070,8 +6199,10 @@ w_metadata crypt32 dlls \ file1="../winxpsp3/WindowsXP-KB936929-SP3-x86-ENU.exe" \ installed_file1="${W_SYSTEM32_DLLS_WIN}/crypt32.dll" -load_crypt32() +load_crypt32_winxp() { + w_package_warn_win64 # Only the 32-bit DLL is installed + w_call msasn1 helper_winxpsp3 i386/crypt32.dl_ @@ -6107,6 +6238,25 @@ load_binkw32() #---------------------------------------------------------------- +w_metadata d2gl dlls \ + title="Diablo 2 LoD Glide to OpenGL Wrapper" \ + publisher="Bayaraa" \ + year="2023" \ + media="download" \ + file1="D2GL.v1.3.3.zip" \ + installed_file1="${W_PROGRAMS_X86_WIN}/Diablo II/glide3x.dll" \ + homepage="https://github.com/bayaraa/d2gl" + +load_d2gl() +{ + w_download https://github.com/bayaraa/d2gl/releases/download/v1.3.3/D2GL.v1.3.3.zip 33862ab74f314f9e72f992dd8850f8bfd0d6533ef0e4a0015867fc6524125ea2 + w_try_unzip "${W_PROGRAMS_X86_UNIX}/Diablo II" "${W_CACHE}/${W_PACKAGE}/${file1}" + + w_warn "Run Diablo II using game.exe -3dfx" +} + +#---------------------------------------------------------------- + w_metadata d3dcompiler_42 dlls \ title="MS d3dcompiler_42.dll" \ publisher="Microsoft" \ @@ -6149,10 +6299,6 @@ w_metadata d3dcompiler_43 dlls \ load_d3dcompiler_43() { - if w_workaround_wine_bug 24013 "Native d3dcompiler_43 may cause some d3d10 apps to crash, see https://bugs.winehq.org/show_bug.cgi?id=24013" 4.20,; then - : - fi - dllname=d3dcompiler_43 helper_directx_Jun2010 @@ -6208,21 +6354,17 @@ w_metadata d3dcompiler_47 dlls \ publisher="Microsoft" \ year="FIXME" \ media="download" \ - file1="FirefoxSetup62.0.3-win32.exe" \ + file1="d3dcompiler_47_32.dll" \ installed_file1="${W_SYSTEM32_DLLS_WIN}/d3dcompiler_47.dll" load_d3dcompiler_47() { - # FIXME: would be awesome to find a small download that has both 32/64bit dlls, but this works for now: - - w_download https://download-installer.cdn.mozilla.net/pub/firefox/releases/62.0.3/win32/ach/Firefox%20Setup%2062.0.3.exe "d6edb4ff0a713f417ebd19baedfe07527c6e45e84a6c73ed8c66a33377cc0aca" "FirefoxSetup62.0.3-win32.exe" - w_try_7z "${W_TMP}/win32" "${W_CACHE}/d3dcompiler_47/FirefoxSetup62.0.3-win32.exe" "core/d3dcompiler_47.dll" - w_try_cp_dll "${W_TMP}/win32/core/d3dcompiler_47.dll" "${W_SYSTEM32_DLLS}/d3dcompiler_47.dll" + w_download https://raw.githubusercontent.com/mozilla/fxc2/master/dll/d3dcompiler_47_32.dll 2ad0d4987fc4624566b190e747c9d95038443956ed816abfd1e2d389b5ec0851 + w_try_cp_dll "${W_CACHE}/d3dcompiler_47/d3dcompiler_47_32.dll" "${W_SYSTEM32_DLLS}/d3dcompiler_47.dll" if [ "${W_ARCH}" = "win64" ]; then - w_download https://download-installer.cdn.mozilla.net/pub/firefox/releases/62.0.3/win64/ach/Firefox%20Setup%2062.0.3.exe "721977f36c008af2b637aedd3f1b529f3cfed6feb10f68ebe17469acb1934986" "FirefoxSetup62.0.3-win64.exe" - w_try_7z "${W_TMP}/win64" "${W_CACHE}/d3dcompiler_47/FirefoxSetup62.0.3-win64.exe" "core/d3dcompiler_47.dll" - w_try_cp_dll "${W_TMP}/win64/core/d3dcompiler_47.dll" "${W_SYSTEM64_DLLS}/d3dcompiler_47.dll" + w_download https://raw.githubusercontent.com/mozilla/fxc2/master/dll/d3dcompiler_47.dll 4432bbd1a390874f3f0a503d45cc48d346abc3a8c0213c289f4b615bf0ee84f3 + w_try_cp_dll "${W_CACHE}/d3dcompiler_47/d3dcompiler_47.dll" "${W_SYSTEM64_DLLS}/d3dcompiler_47.dll" fi w_override_dlls native d3dcompiler_47 @@ -7048,7 +7190,7 @@ helper_dxvk() _W_dll_overrides="$(echo "${_W_dll_overrides}" | sed 's/d3d10 /&d3d10_1 /')" _W_package_dir="${_W_package_archive%.tar.gz}" _W_package_version="${_W_package_dir#*-}" - w_warn "Please refer to ${_W_repository#*/} version ${_W_package_version} release notes... See: https://github.com/${_W_repository}/releases/tag/${_W_package_version}" + w_warn "Please refer to ${_W_repository#*/} version ${_W_package_version} release notes... See: https://github.com/${_W_repository}/releases/tag/v${_W_package_version}" w_warn "Please refer to current dxvk base graphics driver requirements... See: https://github.com/doitsujin/dxvk/wiki/Driver-support" if w_wine_version_in ",${_W_min_wine_version}" ; then @@ -7061,14 +7203,14 @@ helper_dxvk() if [ "${_W_package_archive##*.}" = "zip" ]; then w_try_unzip "${W_TMP}" "${W_CACHE}/${W_PACKAGE}/${_W_package_archive}" else - w_try_cd "${W_TMP}" - w_try tar -zxf "${W_CACHE}/${W_PACKAGE}/${_W_package_archive}" + w_try tar -C "${W_TMP}" -zxf "${W_CACHE}/${W_PACKAGE}/${_W_package_archive}" fi for _W_dll in ${_W_dll_overrides}; do w_try mv "${W_TMP}/${_W_package_dir}/x32/${_W_dll}.dll" "${W_SYSTEM32_DLLS}/" [ "${_W_dll}" = "d3d9" ] && _W_d3d9_support="1" done + if test "${W_ARCH}" = "win64"; then for _W_dll in ${_W_dll_overrides}; do w_try mv "${W_TMP}/${_W_package_dir}/x64/${_W_dll}.dll" "${W_SYSTEM64_DLLS}/" @@ -8277,7 +8419,7 @@ load_dxvk1102() w_metadata dxvk1103 dlls \ title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (1.10.3)" \ publisher="Philip Rebohle" \ - year="2017" \ + year="2022" \ media="download" \ file1="dxvk-1.10.3.tar.gz" \ installed_file1="${W_SYSTEM32_DLLS_WIN}/d3d9.dll" \ @@ -8294,12 +8436,81 @@ load_dxvk1103() helper_dxvk "${file1}" "5.14" "1.2.140" "dxgi,d3d9,d3d10core,d3d10,d3d11" } +w_metadata dxvk2000 dlls \ + title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (2.0)" \ + publisher="Philip Rebohle" \ + year="2022" \ + media="download" \ + file1="dxvk-2.0.tar.gz" \ + installed_file1="${W_SYSTEM32_DLLS_WIN}/d3d9.dll" \ + installed_file2="${W_SYSTEM32_DLLS_WIN}/d3d10core.dll" \ + installed_file3="${W_SYSTEM32_DLLS_WIN}/d3d11.dll" \ + installed_file4="${W_SYSTEM32_DLLS_WIN}/dxgi.dll" + +load_dxvk2000() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v2.0/dxvk-2.0.tar.gz" 3852f8b4a0c23fd723c9ce06ba8c36d8f84d891755a5d00bec1cd7f609a62477 + helper_dxvk "${file1}" "7.1" "1.3.204" "dxgi,d3d9,d3d10core,d3d11" +} + +w_metadata dxvk2010 dlls \ + title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (2.1)" \ + publisher="Philip Rebohle" \ + year="2023" \ + media="download" \ + file1="dxvk-2.1.tar.gz" \ + installed_file1="${W_SYSTEM32_DLLS_WIN}/d3d9.dll" \ + installed_file2="${W_SYSTEM32_DLLS_WIN}/d3d10core.dll" \ + installed_file3="${W_SYSTEM32_DLLS_WIN}/d3d11.dll" \ + installed_file4="${W_SYSTEM32_DLLS_WIN}/dxgi.dll" + +load_dxvk2010() +{ + w_download "https://github.com/doitsujin/dxvk/releases/download/v2.1/dxvk-2.1.tar.gz" 329940b0c01226459f073d91ff1276d4d9c1c4c017303afe06193eb064502cde + helper_dxvk "${file1}" "7.1" "1.3.204" "dxgi,d3d9,d3d10core,d3d11" +} + +w_metadata dxvk2020 dlls \ + title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (2.2)" \ + publisher="Philip Rebohle" \ + year="2023" \ + media="download" \ + file1="dxvk-2.2.tar.gz" \ + installed_file1="${W_SYSTEM32_DLLS_WIN}/d3d9.dll" \ + installed_file2="${W_SYSTEM32_DLLS_WIN}/d3d10core.dll" \ + installed_file3="${W_SYSTEM32_DLLS_WIN}/d3d11.dll" \ + installed_file4="${W_SYSTEM32_DLLS_WIN}/dxgi.dll" + +load_dxvk2020() +{ + w_download "https://github.com/doitsujin/dxvk/releases/download/v2.2/dxvk-2.2.tar.gz" fcbede6da370d138f275ca05bc887f5a562f27cd8bd00f436706a7142cb51630 + helper_dxvk "${file1}" "7.1" "1.3.204" "dxgi,d3d9,d3d10core,d3d11" +} + +w_metadata dxvk2030 dlls \ + title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (2.3)" \ + publisher="Philip Rebohle" \ + year="2023" \ + media="download" \ + file1="dxvk-2.3.tar.gz" \ + installed_file1="${W_SYSTEM32_DLLS_WIN}/d3d9.dll" \ + installed_file2="${W_SYSTEM32_DLLS_WIN}/d3d10core.dll" \ + installed_file3="${W_SYSTEM32_DLLS_WIN}/d3d11.dll" \ + installed_file4="${W_SYSTEM32_DLLS_WIN}/dxgi.dll" + +load_dxvk2030() +{ + w_download "https://github.com/doitsujin/dxvk/releases/download/v2.3/dxvk-2.3.tar.gz" 8059c06fc84a864122cc572426f780f35921eb4e3678dc337e9fd79ee5a427c0 + helper_dxvk "${file1}" "7.1" "1.3.204" "dxgi,d3d9,d3d10core,d3d11" +} + #---------------------------------------------------------------- w_metadata dxvk dlls \ title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (latest)" \ publisher="Philip Rebohle" \ - year="2017" \ + year="2023" \ media="download" \ installed_file1="${W_SYSTEM32_DLLS_WIN}/d3d9.dll" \ installed_file2="${W_SYSTEM32_DLLS_WIN}/d3d10core.dll" \ @@ -8318,14 +8529,75 @@ load_dxvk() #---------------------------------------------------------------- -# $1 - vkd3d-proton archive name (required) -helper_vkd3d_proton() +# $1 - dxvk-nvapi archive name (required) +# $2 - minimum Wine version (required) +# $3 - nvapi,[nvapi64] (required) +helper_dxvk_nvapi() { _W_package_archive="${1}" + _W_min_wine_version="${2}" + _W_dll_overrides="$(echo "${3}" | sed 's/,/ /g')" + # dxvk-nvapi repository, for (partial) NVAPI support + _W_repository="jp7677/dxvk-nvapi" - _W_dll_overrides="d3d12" - - case "${_W_package_archive}" in + _W_supported_overrides="nvapi nvapi64" + _W_invalid_overrides="$(echo "${_W_dll_overrides}" | awk -vvalid_overrides_regex="$(echo "${_W_supported_overrides}" | sed 's/ /|/g')" '{ gsub(valid_overrides_regex,""); sub("[ ]*",""); print $0 }')" + if [ "${_W_invalid_overrides}" != "" ]; then + w_die "parameter (4) unsupported dll override: '${_W_invalid_overrides}' ; supported dll overrides: ${_W_supported_overrides}" + fi + + _W_package_dir="${_W_package_archive%.tar.gz}" + _W_package_version="v${_W_package_dir#*-v}" + w_warn "Please refer to ${_W_repository#*/} version ${_W_package_version} release notes... See: https://github.com/${_W_repository}/releases/tag/${_W_package_version}" + w_warn "Please refer to current dxvk base graphics driver requirements... See: https://github.com/doitsujin/dxvk/wiki/Driver-support" + + if [ "${_W_package_archive##*.}" = "zip" ]; then + w_try_unzip "${W_TMP}" "${W_CACHE}/${W_PACKAGE}/${_W_package_archive}" + else + w_try_cd "${W_TMP}" + w_try tar -zxf "${W_CACHE}/${W_PACKAGE}/${_W_package_archive}" + fi + + w_try mv "${W_TMP}/x32/nvapi.dll" "${W_SYSTEM32_DLLS}/" + + if test "${W_ARCH}" = "win64"; then + w_try mv "${W_TMP}/x64/nvapi64.dll" "${W_SYSTEM64_DLLS}/" + fi + + # shellcheck disable=SC2086 + w_override_dlls native ${_W_dll_overrides} + w_call dxvk + + unset _W_dll _W_dll_overrides _W_invalid_overrides _W_min_wine_version \ + _W_package_archive _W_package_dir _W_package_version \ + _W_repository _W_supported_overrides +} + +w_metadata dxvk_nvapi0061 dlls \ + title="Alternative NVAPI Vulkan implementation on top of DXVK for Linux / Wine (0.6.1)" \ + publisher="Jens Peters" \ + year="2023" \ + media="download" \ + file1="dxvk-nvapi-v0.6.1.tar.gz" \ + installed_file1="${W_SYSTEM32_DLLS_WIN}/nvapi.dll" \ + installed_file2="${W_SYSTEM32_DLLS_WIN}/nvapi64.dll" + +load_dxvk_nvapi0061() +{ + w_download "https://github.com/jp7677/dxvk-nvapi/releases/download/v0.6.1/dxvk-nvapi-v0.6.1.tar.gz" c05196dd1ba10522e23ae8e30fec9c7e8ce624467558b1b3000499bf5b3d83aa + helper_dxvk_nvapi "${file1}" "7.1" "nvapi,nvapi64" +} + +#---------------------------------------------------------------- + +# $1 - vkd3d-proton archive name (required) +helper_vkd3d_proton() +{ + _W_package_archive="${1}" + + _W_dll_overrides="d3d12 d3d12core" + + case "${_W_package_archive}" in vkd3d-proton*) _W_repository="HansKristian-Work/vkd3d-proton" ;; @@ -8381,7 +8653,8 @@ w_metadata vkd3d dlls \ publisher="Hans-Kristian Arntzen " \ year="2020" \ media="download" \ - installed_file1="${W_SYSTEM32_DLLS_WIN}/d3d12.dll" + installed_file1="${W_SYSTEM32_DLLS_WIN}/d3d12.dll" \ + installed_file2="${W_SYSTEM32_DLLS_WIN}/d3d12core.dll" load_vkd3d() { @@ -8741,6 +9014,7 @@ load_dotnet20() w_download https://download.lenovo.com/ibmdl/pub/pc/pccbbs/thinkvantage_en/dotnetfx.exe 46693d9b74d12454d117cc61ff2e9481cabb100b4d74eb5367d3cf88b89a0e71 # Needed for https://bugs.winehq.org/show_bug.cgi?id=12401 + w_store_winver w_set_winver win2k # if dotnet11 if installed there is a warning dialog, but it still verifies @@ -8773,7 +9047,7 @@ load_dotnet20() w_try_ms_installer "${WINE}" dotnetfx.exe ${W_OPT_UNATTENDED:+/q /c:"install.exe /q"} fi - w_set_winver 'default' + w_restore_winver # We can't stop installing dotnet20 in win2k mode until Wine supports # reparse/junction points @@ -8797,8 +9071,6 @@ load_dotnet20() verify_dotnet20() { - w_package_broken_win64 https://bugs.winehq.org/show_bug.cgi?id=49550 5.7 - w_dotnet_verify dotnet20 } @@ -8888,18 +9160,10 @@ load_dotnet20sp1() { w_call remove_mono internal - # Not sure when exactly it was fixed, but it works with 4.0+, and doesn't in 3.0 - # Given that 3.x is deprecated, not worth looking into. - # See https://github.com/Winetricks/winetricks/pull/1271 - # https://bugs.winehq.org/show_bug.cgi?id=47484, et al - if w_wine_version_in 4.0, ; then - WINEDLLOVERRIDES="regsvcs.exe,mscorsvw.exe=b;${WINEDLLOVERRIDES}" - export WINEDLLOVERRIDES - else - WINEDLLOVERRIDES="ngen.exe,regsvcs.exe,mscorsvw.exe=b;${WINEDLLOVERRIDES}" - export WINEDLLOVERRIDES - fi + WINEDLLOVERRIDES="ngen.exe,regsvcs.exe,mscorsvw.exe=b;${WINEDLLOVERRIDES}" + export WINEDLLOVERRIDES + w_store_winver if [ "${W_ARCH}" = "win32" ]; then # https://www.microsoft.com/en-us/download/details.aspx?id=16614 w_download https://download.microsoft.com/download/0/8/c/08c19fa4-4c4f-4ffb-9d6c-150906578c9e/NetFx20SP1_x86.exe c36c3a1d074de32d53f371c665243196a7608652a2fc6be9520312d5ce560871 @@ -8930,7 +9194,7 @@ load_dotnet20sp1() fi - w_set_winver 'default' + w_restore_winver W_NGEN_CMD="w_try ${WINE} ${W_DRIVE_C}/windows/Microsoft.NET/Framework/v2.0.50727/ngen.exe executequeueditems" @@ -8960,18 +9224,11 @@ load_dotnet20sp2() { w_call remove_mono internal - # Not sure when exactly it was fixed, but it works with 4.0+, and doesn't in 3.0 - # Given that 3.x is deprecated, not worth looking into. - # See https://github.com/Winetricks/winetricks/pull/1271 - # https://bugs.winehq.org/show_bug.cgi?id=47484, et al - if w_wine_version_in 4.0, ; then - WINEDLLOVERRIDES="regsvcs.exe,mscorsvw.exe=b;${WINEDLLOVERRIDES}" - export WINEDLLOVERRIDES - else - WINEDLLOVERRIDES="ngen.exe,regsvcs.exe,mscorsvw.exe=b;${WINEDLLOVERRIDES}" - export WINEDLLOVERRIDES - fi + WINEDLLOVERRIDES="ngen.exe=n;regsvcs.exe,mscorsvw.exe=b;${WINEDLLOVERRIDES}" + export WINEDLLOVERRIDES + w_warn "Setting Windows version so installer works" + w_store_winver w_set_winver winxp if [ "${W_ARCH}" = "win32" ]; then @@ -8997,7 +9254,7 @@ load_dotnet20sp2() rm -f "${W_SYSTEM32_DLLS}"/msvc?80.dll fi - w_set_winver 'default' + w_restore_winver w_override_dlls native mscorwks W_NGEN_CMD="w_try ${WINE} ${W_DRIVE_C}/windows/Microsoft.NET/Framework/v2.0.50727/ngen.exe executequeueditems" @@ -9053,36 +9310,28 @@ load_dotnet30() # AF's workaround to avoid long pause LANGPACKS_BASE_PATH="${W_WINDIR_UNIX}/SYSMSICache/Framework/v3.0" - test -d "${LANGPACKS_BASE_PATH}" || mkdir -p "${LANGPACKS_BASE_PATH}" + test -d "${LANGPACKS_BASE_PATH}" || w_try_mkdir "${LANGPACKS_BASE_PATH}" # shellcheck disable=SC1010 for lang in ar cs da de el es fi fr he it jp ko nb nl pl pt-BR pt-PT ru sv tr zh-CHS zh-CHT; do ln -sf "${W_SYSTEM32_DLLS}/spupdsvc.exe" "${LANGPACKS_BASE_PATH}/dotnetfx3langpack${lang}.exe" done + w_store_winver w_set_winver winxp # Delete FontCache 3.0 service, it's in Wine for Mono, breaks native .NET # OK if this fails, that just means you have an older Wine. "${WINE}" sc delete "FontCache3.0.0.0" - # Not sure when exactly it was fixed, but it works with 4.0+, and doesn't in 3.0 - # Given that 3.x is deprecated, not worth looking into. - # See https://github.com/Winetricks/winetricks/pull/1271 - # https://bugs.winehq.org/show_bug.cgi?id=47484, et al - if w_wine_version_in 4.0, ; then - WINEDLLOVERRIDES="mscorsvw.exe=b;${WINEDLLOVERRIDES}" - export WINEDLLOVERRIDES - else - WINEDLLOVERRIDES="ngen.exe,mscorsvw.exe=b;${WINEDLLOVERRIDES}" - export WINEDLLOVERRIDES - fi + WINEDLLOVERRIDES="ngen.exe,mscorsvw.exe=b;${WINEDLLOVERRIDES}" + export WINEDLLOVERRIDES w_try_cd "${W_CACHE}/${W_PACKAGE}" w_warn "Installing .NET 3.0 runtime silently, as otherwise it gets hidden behind taskbar. Installation usually takes about 3 minutes." w_try "${WINE}" "${file1}" /q /c:"install.exe /q" w_override_dlls native mscorwks - w_set_winver 'default' + w_restore_winver # Doesn't install any ngen.exe # W_NGEN_CMD="" @@ -9109,18 +9358,6 @@ load_dotnet30sp1() # I can't find a 64-bit installer anywhere w_package_unsupported_win64 - w_package_broken "https://bugs.winehq.org/show_bug.cgi?id=47436" 4.8 4.15 - w_package_broken "https://bugs.winehq.org/show_bug.cgi?id=48277" 4.16 4.21 - - # And a third way, but only with mingw enabled in wine-4.12.1 through wine-4.14 - w_package_broken_mingw "https://bugs.winehq.org/show_bug.cgi?id=47484" 4.12.1 4.14 - - # crashes on install: - w_package_broken "https://bugs.winehq.org/show_bug.cgi?id=49831" 5.17 6.0 - - # XpsFilt.dll doesn't get installed (not sure what version exactly causes it, bug 49831 muddies things): - w_package_broken "https://bugs.winehq.org/show_bug.cgi?id=50463" 5.17 6.0 - # FIXME: URL? w_download https://download.microsoft.com/download/8/F/E/8FEEE89D-9E4F-4BA3-993E-0FFEA8E21E1B/NetFx30SP1_x86.exe 3100df4d4db3965ead9520c887a534115cf6fc7ba100abde45226958b865695b # Recipe from https://bugs.winehq.org/show_bug.cgi?id=25060#c10 @@ -9133,15 +9370,12 @@ load_dotnet30sp1() w_call dotnet20sp1 w_wineserver -w - if w_workaround_wine_bug 47436 "Installing native prntvpt" 4.11,4.15 ;then - w_call prntvpt - fi - w_try_cd "${W_CACHE}/${W_PACKAGE}" "${WINE}" reg add "HKLM\\Software\\Microsoft\\Net Framework Setup\\NDP\\v3.0" /v Version /t REG_SZ /d "3.0" /f "${WINE}" reg add "HKLM\\Software\\Microsoft-\\Net Framework Setup\\NDP\\v3.0" /v SP /t REG_DWORD /d 0001 /f + w_store_winver w_set_winver winxp "${WINE}" sc delete FontCache3.0.0.0 @@ -9149,7 +9383,7 @@ load_dotnet30sp1() w_try_ms_installer "${WINE}" "${file1}" ${W_OPT_UNATTENDED:+/q} w_override_dlls native mscorwks - w_set_winver 'default' + w_restore_winver # Doesn't install any ngen.exe # W_NGEN_CMD="" @@ -9186,6 +9420,7 @@ load_dotnet35() w_call remove_mono internal + w_store_winver w_set_winver winxp w_override_dlls native mscoree mscorwks @@ -9194,7 +9429,7 @@ load_dotnet35() w_try_cd "${W_CACHE}/${W_PACKAGE}" w_try_ms_installer "${WINE}" "${file1}" /lang:ENU ${W_OPT_UNATTENDED:+/q} - w_set_winver 'default' + w_restore_winver # Doesn't install any ngen.exe # W_NGEN_CMD="" @@ -9227,6 +9462,7 @@ load_dotnet35sp1() w_call remove_mono internal + w_store_winver w_set_winver winxp w_override_dlls native mscoree mscorwks @@ -9243,10 +9479,11 @@ load_dotnet35sp1() w_try rm "${WINETRICKS_CACHE_SYMLINK}" w_try_cd "${W_TMP}" w_try ln -s "${W_CACHE}/${W_PACKAGE}/${file1}" . - w_try_ms_installer "${WINE}" dotnetfx35.exe /lang:ENU ${W_OPT_UNATTENDED:+/q} + + WINEDLLOVERRIDES="ngen.exe=n" w_try_ms_installer "${WINE}" dotnetfx35.exe /lang:ENU ${W_OPT_UNATTENDED:+/q} w_try rm dotnetfx35.exe - w_set_winver 'default' + w_restore_winver # Doesn't install any ngen.exe # W_NGEN_CMD="" @@ -9285,6 +9522,7 @@ load_dotnet40() w_call remove_mono internal + w_store_winver w_call winxp w_try_cd "${W_CACHE}/${W_PACKAGE}" @@ -9310,7 +9548,7 @@ load_dotnet40() # *) w_warn " esac - w_set_winver 'default' + w_restore_winver } verify_dotnet40() @@ -9345,7 +9583,7 @@ load_dotnet40_kb2468871() fi w_try_cd "${W_TMP}" - w_try "${WINE}" msiexec /p NDP40-KB2468871.msp + WINEDLLOVERRIDES="ngen.exe=n" w_try "${WINE}" msiexec /p NDP40-KB2468871.msp # See https://bugs.winehq.org/show_bug.cgi?id=47277#c9 case "${LANG}" in @@ -9355,8 +9593,6 @@ load_dotnet40_kb2468871() # I don't think it's worth warning *every* non-en_US.UTF-8 user: # *) w_warn " esac - - w_set_winver 'default' } verify_dotnet40_kb2468871() @@ -9855,6 +10091,156 @@ load_dotnetcoredesktop3() #---------------------------------------------------------------- +w_metadata dotnet6 dlls \ + title="MS .NET Runtime 6.0 LTS" \ + publisher="Microsoft" \ + year="2023" \ + media="download" \ + file1="dotnet-runtime-6.0.19-win-x86.exe" \ + installed_file1="${W_PROGRAMS_WIN}/dotnet/dotnet.exe" + +load_dotnet6() +{ + # Official version, see https://dotnet.microsoft.com/en-us/download/dotnet/6.0 + w_download https://download.visualstudio.microsoft.com/download/pr/6b04af90-1760-4f04-93bc-548cc03f1d4b/1479bfb3a68bd45bdce774e18449fe6c/dotnet-runtime-6.0.19-win-x86.exe cc1e7714b2f988c779de37c831857e5fa9d9f3d3a53d02298679a2c514c55649 + + w_try_cd "${W_CACHE}"/"${W_PACKAGE}" + w_try "${WINE}" "${file1}" ${W_OPT_UNATTENDED:+/quiet} + + if [ "${W_ARCH}" = "win64" ]; then + # Also install the 64-bit version + w_download https://download.visualstudio.microsoft.com/download/pr/7bb7f85b-9bf0-4c6f-b3e4-a3832720f162/73e280cfd7f686c34748e0bf98d879c7/dotnet-runtime-6.0.19-win-x64.exe e9b1a354e9d207465fc635be80984d842f94d75171a141e51f3151bbfcb06945 + w_try "${WINE}" "dotnet-runtime-6.0.19-win-x64.exe" ${W_OPT_UNATTENDED:+/quiet} + fi +} + +#---------------------------------------------------------------- + +w_metadata dotnetdesktop6 dlls \ + title="MS .NET Desktop Runtime 6.0 LTS" \ + publisher="Microsoft" \ + year="2023" \ + media="download" \ + file1="windowsdesktop-runtime-6.0.19-win-x86.exe" \ + installed_file1="${W_PROGRAMS_WIN}/dotnet/dotnet.exe" + +load_dotnetdesktop6() +{ + # Official version, see https://dotnet.microsoft.com/en-us/download/dotnet/6.0 + w_download https://download.visualstudio.microsoft.com/download/pr/1a0e6cd8-4c5b-4a25-8da6-6985792c5cad/aea270b977828772087496b7b073f383/windowsdesktop-runtime-6.0.19-win-x86.exe 9e0399dabe100ebe271b76615629891a10dc9b14aaedb3ec14d0e22e99925ddf + + w_try_cd "${W_CACHE}"/"${W_PACKAGE}" + w_try "${WINE}" "${file1}" ${W_OPT_UNATTENDED:+/quiet} + + if [ "${W_ARCH}" = "win64" ]; then + # Also install the 64-bit version + w_download https://download.visualstudio.microsoft.com/download/pr/30841ca9-5538-40c3-9022-d1ba1e69f6e8/aa94715bc3d74ee0b2e27de757ef0cdb/windowsdesktop-runtime-6.0.19-win-x64.exe f95017731cd35fe71b27aa904fb64242b16f390c52ad6f9d464ddfe8c11325c9 + w_try "${WINE}" "windowsdesktop-runtime-6.0.19-win-x64.exe" ${W_OPT_UNATTENDED:+/quiet} + fi +} + +#---------------------------------------------------------------- + +w_metadata dotnet7 dlls \ + title="MS .NET Runtime 7.0 LTS" \ + publisher="Microsoft" \ + year="2023" \ + media="download" \ + file1="dotnet-runtime-7.0.14-win-x86.exe" \ + installed_file1="${W_PROGRAMS_WIN}/dotnet/dotnet.exe" + +load_dotnet7() +{ + # Official version, see https://dotnet.microsoft.com/en-us/download/dotnet/7.0 + w_download https://download.visualstudio.microsoft.com/download/pr/de4e320a-79ea-4304-9acf-975d91251aae/bf49bfe95aa6b22b66eb9af462dee480/dotnet-runtime-7.0.14-win-x86.exe aec1444479216f0175472ade3ed4195276a294029c697d41c4a5e92c8760d734 + + w_try_cd "${W_CACHE}"/"${W_PACKAGE}" + w_try "${WINE}" "${file1}" ${W_OPT_UNATTENDED:+/quiet} + + if [ "${W_ARCH}" = "win64" ]; then + # Also install the 64-bit version + w_download https://download.visualstudio.microsoft.com/download/pr/5e3be9c1-4b4c-4605-b3bc-18ef04b3c8d5/b1f864adc9c81ab6680385a4270b3887/dotnet-runtime-7.0.14-win-x64.exe 0f52b4e0c33713f8ff7681708fce9074bb7177f51c395139ce243319930bc932 + w_try "${WINE}" "dotnet-runtime-7.0.14-win-x64.exe" ${W_OPT_UNATTENDED:+/quiet} + fi +} + +#---------------------------------------------------------------- + +w_metadata dotnetdesktop7 dlls \ + title="MS .NET Desktop Runtime 7.0 LTS" \ + publisher="Microsoft" \ + year="2023" \ + media="download" \ + file1="windowsdesktop-runtime-7.0.14-win-x86.exe" \ + installed_file1="${W_PROGRAMS_WIN}/dotnet/dotnet.exe" + +load_dotnetdesktop7() +{ + # Official version, see https://dotnet.microsoft.com/en-us/download/dotnet/7.0 + w_download https://download.visualstudio.microsoft.com/download/pr/3a87d4cf-87c7-4432-89af-37f21dc651a7/7996e26d189d21afa4fe54a02062df5d/windowsdesktop-runtime-7.0.14-win-x86.exe 956da197039167099ccbb30b71efc9cf3ea4bdcb844016ca0de7c1e41c217e61 + + w_try_cd "${W_CACHE}"/"${W_PACKAGE}" + w_try "${WINE}" "${file1}" ${W_OPT_UNATTENDED:+/quiet} + + if [ "${W_ARCH}" = "win64" ]; then + # Also install the 64-bit version + w_download https://download.visualstudio.microsoft.com/download/pr/8f5b0079-2bb4-49cd-874e-0f58703eff6e/7010b5f213a2c436a307eb385dbb16ff/windowsdesktop-runtime-7.0.14-win-x64.exe 863d7c749f8c3d9d9e444813b3f8b829ce6aed79dd2c70a9c29532a9d3688821 + w_try "${WINE}" "windowsdesktop-runtime-7.0.14-win-x64.exe" ${W_OPT_UNATTENDED:+/quiet} + fi +} + +#---------------------------------------------------------------- + +w_metadata dotnet8 dlls \ + title="MS .NET Runtime 8.0 LTS" \ + publisher="Microsoft" \ + year="2024" \ + media="download" \ + file1="dotnet-runtime-8.0.2-win-x86.exe" \ + installed_file1="${W_PROGRAMS_WIN}/dotnet/dotnet.exe" + +load_dotnet8() +{ + # Official version, see https://dotnet.microsoft.com/en-us/download/dotnet/8.0 + w_download https://download.visualstudio.microsoft.com/download/pr/e4987764-bda2-4a72-8820-52605f30e899/f5b412fec80d7f4b20fc4ac7740f7279/dotnet-runtime-8.0.2-win-x86.exe b765676fc2f85cb393cabf2bef5dd118578a2a8761be97454352c0c2634957a4 + + w_try_cd "${W_CACHE}"/"${W_PACKAGE}" + w_try "${WINE}" "${file1}" ${W_OPT_UNATTENDED:+/quiet} + + if [ "${W_ARCH}" = "win64" ]; then + # Also install the 64-bit version + w_download https://download.visualstudio.microsoft.com/download/pr/a4bc7333-6e30-4e2d-b300-0b4f23537e5b/4b81af6d46a02fba5d9ce030af438c67/dotnet-runtime-8.0.2-win-x64.exe ec10da69116d12691abcb374929cf9eec65e4607095ff1ff035989848fd1db00 + w_try "${WINE}" "dotnet-runtime-8.0.2-win-x64.exe" ${W_OPT_UNATTENDED:+/quiet} + fi +} + +#---------------------------------------------------------------- + +w_metadata dotnetdesktop8 dlls \ + title="MS .NET Desktop Runtime 8.0 LTS" \ + publisher="Microsoft" \ + year="2024" \ + media="download" \ + file1="windowsdesktop-runtime-8.0.2-win-x86.exe" \ + installed_file1="${W_PROGRAMS_WIN}/dotnet/dotnet.exe" + +load_dotnetdesktop8() +{ + # Official version, see https://dotnet.microsoft.com/en-us/download/dotnet/8.0 + w_download https://download.visualstudio.microsoft.com/download/pr/9b77b480-7e32-4321-b417-a41e0f8ea952/3922bbf5538277b1d41e9b49ee443673/windowsdesktop-runtime-8.0.2-win-x86.exe 548bcca012cde72bfa68e693ee3dab175c3aa7926d3a3621c8f6f3b12904b909 + + w_try_cd "${W_CACHE}"/"${W_PACKAGE}" + w_try "${WINE}" "${file1}" ${W_OPT_UNATTENDED:+/quiet} + + if [ "${W_ARCH}" = "win64" ]; then + # Also install the 64-bit version + w_download https://download.visualstudio.microsoft.com/download/pr/84ba33d4-4407-4572-9bfa-414d26e7c67c/bb81f8c9e6c9ee1ca547396f6e71b65f/windowsdesktop-runtime-8.0.2-win-x64.exe 52099c00372c1ef6c78878f98f6994777170c8f8556bc3b42a6c291a268ce750 + w_try "${WINE}" "windowsdesktop-runtime-8.0.2-win-x64.exe" ${W_OPT_UNATTENDED:+/quiet} + fi +} + +#---------------------------------------------------------------- + w_metadata dotnet_verifier dlls \ title="MS .NET Verifier" \ publisher="Microsoft" \ @@ -10139,7 +10525,7 @@ load_faudio190607() #---------------------------------------------------------------- w_metadata faudio dlls \ - title="FAudio (xaudio reimplementation, with xna support) builds for win32 (latest)" \ + title="FAudio (xaudio reimplementation, with xna support) builds for win32 (20.07)" \ publisher="Kron4ek" \ year="2019" \ media="download" \ @@ -10180,7 +10566,7 @@ helper_galliumnine() _W_galliumnine_tmp="${W_TMP}/galliumnine" w_try rm -rf "${_W_galliumnine_tmp}" - w_try mkdir -p "${_W_galliumnine_tmp}" + w_try_mkdir "${_W_galliumnine_tmp}" w_try tar -C "${_W_galliumnine_tmp}" --strip-components=1 -zxf "${W_CACHE}/${W_PACKAGE}/${_W_galliumnine_archive}" w_try mv "${_W_galliumnine_tmp}/lib32/d3d9-nine.dll.so" "${W_SYSTEM32_DLLS}/d3d9-nine.dll" w_try mv "${_W_galliumnine_tmp}/bin32/ninewinecfg.exe.so" "${W_SYSTEM32_DLLS}/ninewinecfg.exe" @@ -10209,6 +10595,7 @@ load_galliumnine02() { w_package_broken "https://bugs.winehq.org/show_bug.cgi?id=49676" 5.13 w_package_broken "https://github.com/iXit/wine-nine-standalone/issues/83" 5.14 + w_package_broken "https://github.com/iXit/wine-nine-standalone/issues/149" 8.3 w_download "https://github.com/iXit/wine-nine-standalone/releases/download/v0.2/gallium-nine-standalone-v0.2.tar.gz" 6818fe890e343aa32d3d53179bfeb63df40977797bd7b6263e85e2bb57559313 helper_galliumnine "${file1}" @@ -10228,6 +10615,7 @@ load_galliumnine03() { w_package_broken "https://bugs.winehq.org/show_bug.cgi?id=49676" 5.13 w_package_broken "https://github.com/iXit/wine-nine-standalone/issues/83" 5.14 + w_package_broken "https://github.com/iXit/wine-nine-standalone/issues/149" 8.3 w_download "https://github.com/iXit/wine-nine-standalone/releases/download/v0.3/gallium-nine-standalone-v0.3.tar.gz" 8bb564073ab2198e5b9b870f7b8cac8d9bc20bc6accf66c4c798e4b450ec0c91 helper_galliumnine "${file1}" @@ -10247,6 +10635,7 @@ load_galliumnine04() { w_package_broken "https://bugs.winehq.org/show_bug.cgi?id=49676" 5.13 w_package_broken "https://github.com/iXit/wine-nine-standalone/issues/83" 5.14 + w_package_broken "https://github.com/iXit/wine-nine-standalone/issues/149" 8.3 w_download "https://github.com/iXit/wine-nine-standalone/releases/download/v0.4/gallium-nine-standalone-v0.4.tar.gz" 4423c32d46419830c8e68fea86d28e740f17f182c365250c379b5493176e19ab helper_galliumnine "${file1}" @@ -10265,6 +10654,7 @@ w_metadata galliumnine05 dlls \ load_galliumnine05() { w_package_broken "https://github.com/iXit/wine-nine-standalone/issues/83" 5.14 + w_package_broken "https://github.com/iXit/wine-nine-standalone/issues/149" 8.3 w_download "https://github.com/iXit/wine-nine-standalone/releases/download/v0.5/gallium-nine-standalone-v0.5.tar.gz" c46e06b13a3ba0adee75b27a8b54e9d772f83ed29dee5e203364460771fb1bcd helper_galliumnine "${file1}" @@ -10282,6 +10672,8 @@ w_metadata galliumnine06 dlls \ load_galliumnine06() { + w_package_broken "https://github.com/iXit/wine-nine-standalone/issues/149" 8.3 + w_download "https://github.com/iXit/wine-nine-standalone/releases/download/v0.6/gallium-nine-standalone-v0.6.tar.gz" 1a085b5175791414fdd513b5adb5682985917fef81e84f0116ef2b4d5295ad1c helper_galliumnine "${file1}" } @@ -10298,6 +10690,8 @@ w_metadata galliumnine07 dlls \ load_galliumnine07() { + w_package_broken "https://github.com/iXit/wine-nine-standalone/issues/149" 8.3 + w_download "https://github.com/iXit/wine-nine-standalone/releases/download/v0.7/gallium-nine-standalone-v0.7.tar.gz" e0b3005280119732d2ca48a5aa5aad27eaf08e6e1dd5598652744a04554a9475 helper_galliumnine "${file1}" } @@ -10314,14 +10708,34 @@ w_metadata galliumnine08 dlls \ load_galliumnine08() { + w_package_broken "https://github.com/iXit/wine-nine-standalone/issues/149" 8.3 + w_download "https://github.com/iXit/wine-nine-standalone/releases/download/v0.8/gallium-nine-standalone-v0.8.tar.gz" 8d73dcf78e4b5edf7a3aea8c339459b5138acd1c957c91c5c06432cb2fc51893 helper_galliumnine "${file1}" } +w_metadata galliumnine09 dlls \ + title="Gallium Nine Standalone (v0.9)" \ + publisher="Gallium Nine Team" \ + year="2023" \ + media="download" \ + file1="gallium-nine-standalone-v0.9.tar.gz" \ + installed_file1="${W_SYSTEM32_DLLS_WIN}/d3d9-nine.dll" \ + installed_file2="${W_SYSTEM32_DLLS_WIN}/ninewinecfg.exe" \ + homepage="https://github.com/iXit/wine-nine-standalone" + +load_galliumnine09() +{ + w_package_broken "https://github.com/iXit/wine-nine-standalone/issues/149" "" 5.7 + + w_download "https://github.com/iXit/wine-nine-standalone/releases/download/v0.9/gallium-nine-standalone-v0.9.tar.gz" 0f6826e48cb979bc6d1fb85dbbb9da6025eb364af61f5ee8dbfd0058430778b1 + helper_galliumnine "${file1}" +} + w_metadata galliumnine dlls \ title="Gallium Nine Standalone (latest)" \ publisher="Gallium Nine Team" \ - year="2019" \ + year="2023" \ media="download" \ installed_file1="${W_SYSTEM32_DLLS_WIN}/d3d9-nine.dll" \ installed_file2="${W_SYSTEM32_DLLS_WIN}/ninewinecfg.exe" \ @@ -10329,6 +10743,11 @@ w_metadata galliumnine dlls \ load_galliumnine() { + if w_wine_version_in ,5.7 ; then + w_call galliumnine08 + return + fi + _W_galliumnine_version="$(w_get_github_latest_release iXit wine-nine-standalone)" w_linkcheck_ignore=1 w_download "https://github.com/iXit/wine-nine-standalone/releases/download/${_W_galliumnine_version}/gallium-nine-standalone-${_W_galliumnine_version}.tar.gz" helper_galliumnine "gallium-nine-standalone-${_W_galliumnine_version}.tar.gz" @@ -10454,7 +10873,7 @@ w_metadata glut dlls \ load_glut() { - w_download https://press.liacs.nl/researchdownloads/glut.win32/glut-3.7.6-bin.zip 788e97653bfd527afbdc69e1b7c6bcf9cb45f33d13ddf9d676dc070da92f80d4 + w_download https://downloads.sourceforge.net/colladaloader/glut-3.7.6-bin.zip 788e97653bfd527afbdc69e1b7c6bcf9cb45f33d13ddf9d676dc070da92f80d4 # FreeBSD unzip rm -rf's inside the target directory before extracting: w_try_unzip "${W_TMP}" "${W_CACHE}"/glut/glut-3.7.6-bin.zip w_try mv "${W_TMP}/glut-3.7.6-bin" "${W_DRIVE_C}" @@ -10480,7 +10899,7 @@ load_gmdls() w_try_cabextract -d "${W_TMP}" -F gm16.dls "${W_TMP}"/DirectX.cab # When running in a 64bit prefix, syswow64/drivers doesn't exist - w_try mkdir -p "${W_SYSTEM32_DLLS}"/drivers + w_try_mkdir "${W_SYSTEM32_DLLS}"/drivers w_try mv "${W_TMP}"/gm16.dls "${W_SYSTEM32_DLLS}"/drivers/gm.dls if test "${W_ARCH}" = "win64"; then @@ -10615,11 +11034,14 @@ load_icodecs() # Work around bug in codec's installer? # https://support.britannica.com/other/touchthesky/win/issues/TSTUw_150.htm # https://appdb.winehq.org/objectManager.php?sClass=version&iId=7091 - w_try_regsvr ir50_32.dll + w_override_dlls native,builtin ir50_32 + w_try_regsvr ir50_32 # Apparently some codecs are missing, see https://github.com/Winetricks/winetricks/issues/302 # Download at https://www.moviecodec.com/download-codec-packs/indeo-codecs-legacy-package-31/ - w_download https://s3.amazonaws.com/moviecodec/files/iv5setup.exe 51bec25488b5b94eb3ce49b0a117618c9526161fd0753817a7a724ce25ff0cad + # 2017/05/24: https://s3.amazonaws.com/moviecodec/files/iv5setup.exe 51bec25488b5b94eb3ce49b0a117618c9526161fd0753817a7a724ce25ff0cad + # 2023/12/30: https://download.civforum.de/civ2/iv5setup.exe + w_download https://download.civforum.de/civ2/iv5setup.exe 51bec25488b5b94eb3ce49b0a117618c9526161fd0753817a7a724ce25ff0cad # Extract the installer so that we can create and use a pre-recorded # Install Shield response file for unattended installations @@ -10837,6 +11259,7 @@ load_ie8_kb2936068() { w_call ie8 + w_store_winver if [ "${W_ARCH}" = "win32" ]; then w_download https://download.microsoft.com/download/3/8/C/38CE0ABB-01FD-4C0A-A569-BC5E82C34A17/IE8-WindowsXP-KB2936068-x86-ENU.exe 8bda23c78cdcd9d01c364a01c6d639dfb2d11550a5521b8a81c808c1a2b1824e w_set_winver winxp @@ -10849,7 +11272,45 @@ load_ie8_kb2936068() w_try_ms_installer "${WINE}" IE8-WindowsServer2003.WindowsXP-KB2936068-x64-ENU.exe ${W_OPT_UNATTENDED:+/quiet /forcerestart} fi - w_set_winver 'default' + w_restore_winver +} + +#---------------------------------------------------------------- + +w_metadata ie8_tls12 dlls \ + title="TLS 1.1 and 1.2 for Internet Explorer 8" \ + publisher="Microsoft" \ + year="2017" \ + media="download" \ + file1="windowsxp-kb4019276-x86-embedded-enu_3822fc1692076429a7dc051b00213d5e1240ce3d.exe" \ + file2="ie8-windowsxp-kb4230450-x86-embedded-enu_d8b388624d07b6804485d347be4f74a985d50be7.exe" \ + installed_file1="c:/windows/KB4230450-IE8.log" + +load_ie8_tls12() +{ + w_package_unsupported_win64 + w_call ie8 + w_set_winver winxp + + "${WINE}" reg add "HKLM\\System\\WPA\\PosReady" /v Installed /t REG_DWORD /d 0001 /f + + w_download http://download.windowsupdate.com/c/msdownload/update/software/updt/2017/10/windowsxp-kb4019276-x86-embedded-enu_3822fc1692076429a7dc051b00213d5e1240ce3d.exe 381abded5dd70a02bd54d4e8926e519ca6b306e26cbf10c45bbf1533bf57a026 + + w_try_cd "${W_CACHE}/${W_PACKAGE}" + + # Avoid permanent hang in attended mode; avoid long pause in unattended mode + w_try_ms_installer "${WINE}" "${file1}" /passive /norestart ${W_OPT_UNATTENDED:+/quiet} + + "${WINE}" reg add "HKLM\\System\\CurrentControlSet\\Control\\SecurityProviders\\Schannel\\Protocols\\TLS 1.1\\Client" /v DisabledByDefault /t REG_DWORD /d 0000 /f + "${WINE}" reg add "HKLM\\System\\CurrentControlSet\\Control\\SecurityProviders\\Schannel\\Protocols\\TLS 1.2\\Client" /v DisabledByDefault /t REG_DWORD /d 0000 /f + + w_download http://download.windowsupdate.com/c/msdownload/update/software/secu/2018/06/ie8-windowsxp-kb4230450-x86-embedded-enu_d8b388624d07b6804485d347be4f74a985d50be7.exe ec1183d4bfd0a92286678554f20a2d0f58c70ee9cb8ad90a5084812545b80068 + + # Force quiet mode to avoid permanent hang + w_try_ms_installer "${WINE}" ie8-windowsxp-kb4230450-x86-embedded-enu_d8b388624d07b6804485d347be4f74a985d50be7.exe /quiet + + "${WINE}" reg add "HKLM\\Software\\Microsoft\\Internet Explorer\\AdvancedOptions\\CRYPTO\\TLS1.1" /v OSVersion /t REG_SZ /d "3.5.1.0.0" /f + "${WINE}" reg add "HKLM\\Software\\Microsoft\\Internet Explorer\\AdvancedOptions\\CRYPTO\\TLS1.2" /v OSVersion /t REG_SZ /d "3.5.1.0.0" /f } #---------------------------------------------------------------- @@ -10935,10 +11396,11 @@ load_mdac27() w_download https://web.archive.org/web/20060718123742/http://ftp.gunadarma.ac.id/pub/driver/itegno/USB%20Software/MDAC/MDAC_TYP.EXE 36d2a3099e6286ae3fab181a502a95fbd825fa5ddb30bf09b345abc7f1f620b4 load_native_mdac + w_store_winver w_set_winver nt40 w_try_cd "${W_CACHE}/${W_PACKAGE}" w_try "${WINE}" "${file1}" ${W_OPT_UNATTENDED:+/q /C:"setup /qnt"} - w_set_winver 'default' + w_restore_winver } #---------------------------------------------------------------- @@ -10958,10 +11420,11 @@ load_mdac28() # https://www.microsoft.com/en-us/download/details.aspx?id=5793 w_download https://web.archive.org/web/20070127061938/https://download.microsoft.com/download/4/a/a/4aafff19-9d21-4d35-ae81-02c48dcbbbff/MDAC_TYP.EXE 157ebae46932cb9047b58aa849ac1885e8cbd2f218810cb83e57613b49c679d6 load_native_mdac + w_store_winver w_set_winver nt40 w_try_cd "${W_CACHE}"/"${W_PACKAGE}" w_try "${WINE}" mdac_typ.exe ${W_OPT_UNATTENDED:+/q /C:"setup /qnt"} - w_set_winver 'default' + w_restore_winver } #---------------------------------------------------------------- @@ -10999,7 +11462,7 @@ load_mdx() w_try_cd "${ver}" for asm in *.dll; do name="${asm%%.dll}" - w_try mkdir -p "${W_WINDIR_UNIX}/assembly/GAC/${name}/${ver}__31bf3856ad364e35" + w_try_mkdir "${W_WINDIR_UNIX}/assembly/GAC/${name}/${ver}__31bf3856ad364e35" w_try cp "${asm}" "${W_WINDIR_UNIX}/assembly/GAC/${name}/${ver}__31bf3856ad364e35" done ) @@ -11391,7 +11854,7 @@ w_metadata msxml3 dlls \ load_msxml3() { - # Service Pack 7 + # Service Pack 7, includes a version of msxml3r.dll (resources DLL) # Originally at https://download.microsoft.com/download/8/8/8/888f34b7-4f54-4f06-8dac-fa29b19f33dd/msxml3.msi # Mirror list: http://www.filewatcher.com/m/msxml3.msi.1070592-0.html # Known bad sites (2017/06/11): @@ -11404,13 +11867,24 @@ load_msxml3() w_override_dlls native msxml3 w_try_cd "${W_CACHE}/${W_PACKAGE}" - # See https://github.com/Winetricks/winetricks/issues/1086 + # Start with installing the older 32-bit only version, to get at least some + # version of the resources DLL, which is not included in win7sp1 + # Use quiet install, see https://github.com/Winetricks/winetricks/issues/1086 # and https://bugs.winehq.org/show_bug.cgi?id=26925 if w_workaround_wine_bug 26925 "Forcing quiet install"; then w_try "${WINE}" msiexec /i msxml3.msi /q else w_try "${WINE}" msiexec /i msxml3.msi ${W_OPT_UNATTENDED:+/q} fi + + # Install newer version, which includes the x64 DLL if applicable + helper_win7sp1_x64 wow64_microsoft-windows-msxml30_31bf3856ad364e35_6.1.7601.17514_none_f0e8f05be1d66e78/msxml3.dll + w_try_cp_dll "${W_TMP}/wow64_microsoft-windows-msxml30_31bf3856ad364e35_6.1.7601.17514_none_f0e8f05be1d66e78/msxml3.dll" "${W_SYSTEM32_DLLS}/msxml3.dll" + + if [ "${W_ARCH}" = "win64" ]; then + helper_win7sp1_x64 amd64_microsoft-windows-msxml30_31bf3856ad364e35_6.1.7601.17514_none_e6944609ad75ac7d/msxml3.dll + w_try_cp_dll "${W_TMP}/amd64_microsoft-windows-msxml30_31bf3856ad364e35_6.1.7601.17514_none_e6944609ad75ac7d/msxml3.dll" "${W_SYSTEM64_DLLS}/msxml3.dll" + fi } #---------------------------------------------------------------- @@ -11441,21 +11915,20 @@ load_msxml4() w_metadata msxml6 dlls \ title="MS XML Core Services 6.0 sp2" \ publisher="Microsoft" \ - year="2009" \ + year="2014" \ media="download" \ - file1="msxml6-KB973686-enu-amd64.exe" \ + file1="msxml6-KB2957482-enu-amd64.exe" \ installed_file1="${W_SYSTEM32_DLLS_WIN}/msxml6.dll" load_msxml6() { # Service Pack 2 - # https://www.microsoft.com/en-us/download/details.aspx?id=9774 + # https://www.microsoft.com/en-us/download/details.aspx?id=43253 # 64bit exe also includes 32bit dlls - # Originally here: https://download.microsoft.com/download/1/5/8/158F681A-E595-472B-B15E-62B649B1B6FF/msxml6-KB973686-enu-amd64.exe - w_download https://web.archive.org/web/20190122095451/https://download.microsoft.com/download/1/5/8/158F681A-E595-472B-B15E-62B649B1B6FF/msxml6-KB973686-enu-amd64.exe 0e5c4af488e88e8defb59de80271671d8283d5744b2eebdb351bbd4950fb0883 + w_download https://download.microsoft.com/download/2/7/7/277681BE-4048-4A58-ABBA-259C465B1699/msxml6-KB2957482-enu-amd64.exe 260cd870851ffc3c6d10b71691f134e20d8d03ac26073bb36951eacb7aa85897 - w_try_cabextract --directory="${W_TMP}" "${W_CACHE}"/msxml6/msxml6-KB973686-enu-amd64.exe + w_try_cabextract --directory="${W_TMP}" "${W_CACHE}"/msxml6/msxml6-KB2957482-enu-amd64.exe w_try_cabextract --directory="${W_TMP}" "${W_TMP}"/msxml6.msi w_try_cp_dll "${W_TMP}"/msxml6.dll.86F857F6_A743_463D_B2FE_98CB5F727E09 "${W_SYSTEM32_DLLS}"/msxml6.dll w_try_cp_dll "${W_TMP}"/msxml6r.dll.86F857F6_A743_463D_B2FE_98CB5F727E09 "${W_SYSTEM32_DLLS}"/msxml6r.dll @@ -11550,6 +12023,160 @@ load_oleaut32() #---------------------------------------------------------------- +w_metadata openal dlls \ + title="OpenAL Runtime" \ + publisher="Creative" \ + year="2023" \ + media="download" \ + file1="oalinst.zip" \ + installed_file1="${W_SYSTEM32_DLLS_WIN}/OpenAL32.dll" + +load_openal() +{ + # Official version + w_download https://www.openal.org/downloads/oalinst.zip d165bcb7628fd950d14847585468cc11943b2a1da92a59a839d397c68f9d4b06 + + w_try_unzip "${W_TMP}" "${W_CACHE}/${W_PACKAGE}/oalinst.zip" + w_try "${WINE}" "${W_TMP}/oalinst.exe" /silent +} + + +#---------------------------------------------------------------- + +# $1 - otvdm archive name (required) +helper_otvdm() +{ + _W_package_archive="${1}" + _W_package_dir="${_W_package_archive%.zip}" + + w_try_unzip "${W_TMP}" "${W_CACHE}/${W_PACKAGE}/${_W_package_archive}" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/otvdm.exe" "${W_SYSTEM32_DLLS}/otvdm.exe" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/libwine.dll" "${W_SYSTEM32_DLLS}/libwine.dll" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/avifile.dll16" "${W_SYSTEM32_DLLS}/avifile.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/comm.drv16" "${W_SYSTEM32_DLLS}/comm.drv16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/commctrl.dll16" "${W_SYSTEM32_DLLS}/commctrl.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/commdlg.dll16" "${W_SYSTEM32_DLLS}/commdlg.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/compobj.dll16" "${W_SYSTEM32_DLLS}/compobj.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/ctl3d.dll16" "${W_SYSTEM32_DLLS}/ctl3d.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/ctl3dv2.dll16" "${W_SYSTEM32_DLLS}/ctl3dv2.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/ddeml.dll16" "${W_SYSTEM32_DLLS}/ddeml.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/dispdib.dll16" "${W_SYSTEM32_DLLS}/dispdib.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/display.drv16" "${W_SYSTEM32_DLLS}/display.drv16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/gdi.exe16" "${W_SYSTEM32_DLLS}/gdi.exe16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/keyboard.drv16" "${W_SYSTEM32_DLLS}/keyboard.drv16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/krnl386.exe16" "${W_SYSTEM32_DLLS}/krnl386.exe16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/lzexpand.dll16" "${W_SYSTEM32_DLLS}/lzexpand.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/mmsystem.dll16" "${W_SYSTEM32_DLLS}/mmsystem.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/mouse.drv16" "${W_SYSTEM32_DLLS}/mouse.drv16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/msacm.dll16" "${W_SYSTEM32_DLLS}/msacm.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/msvideo.dll16" "${W_SYSTEM32_DLLS}/msvideo.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/nddeapi.dll16" "${W_SYSTEM32_DLLS}/nddeapi.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/ole2.dll16" "${W_SYSTEM32_DLLS}/ole2.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/ole2conv.dll16" "${W_SYSTEM32_DLLS}/ole2conv.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/ole2disp.dll16" "${W_SYSTEM32_DLLS}/ole2disp.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/ole2nls.dll16" "${W_SYSTEM32_DLLS}/ole2nls.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/ole2prox.dll16" "${W_SYSTEM32_DLLS}/ole2prox.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/ole2thk.dll16" "${W_SYSTEM32_DLLS}/ole2thk.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/olecli.dll16" "${W_SYSTEM32_DLLS}/olecli.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/olesvr.dll16" "${W_SYSTEM32_DLLS}/olesvr.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/regedit.exe16" "${W_SYSTEM32_DLLS}/regedit.exe16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/rmpatch.dll16" "${W_SYSTEM32_DLLS}/rmpatch.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/shell.dll16" "${W_SYSTEM32_DLLS}/shell.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/sound.drv16" "${W_SYSTEM32_DLLS}/sound.drv16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/storage.dll16" "${W_SYSTEM32_DLLS}/storage.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/system.drv16" "${W_SYSTEM32_DLLS}/system.drv16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/timer.drv16" "${W_SYSTEM32_DLLS}/timer.drv16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/toolhelp.dll16" "${W_SYSTEM32_DLLS}/toolhelp.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/typelib.dll16" "${W_SYSTEM32_DLLS}/typelib.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/user.exe16" "${W_SYSTEM32_DLLS}/user.exe16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/ver.dll16" "${W_SYSTEM32_DLLS}/ver.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/wifeman.dll16" "${W_SYSTEM32_DLLS}/wifeman.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/win87em.dll16" "${W_SYSTEM32_DLLS}/win87em.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/wing.dll16" "${W_SYSTEM32_DLLS}/wing.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/winnls.dll16" "${W_SYSTEM32_DLLS}/winnls.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/winoldap.mod16" "${W_SYSTEM32_DLLS}/winoldap.mod16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/winsock.dll16" "${W_SYSTEM32_DLLS}/winsock.dll16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/winspool.drv16" "${W_SYSTEM32_DLLS}/winspool.drv16" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/wow32.dll" "${W_SYSTEM32_DLLS}/wow32.dll" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/vm86.dll" "${W_SYSTEM32_DLLS}/vm86.dll" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/whpxvm.dll" "${W_SYSTEM32_DLLS}/whpxvm.dll" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/haxmvm.dll" "${W_SYSTEM32_DLLS}/haxmvm.dll" + w_try_cp_dll "${W_TMP}/${_W_package_dir}/dll/gvm.dll" "${W_SYSTEM32_DLLS}/gvm.dll" + + w_override_dlls native,builtin avifile.dll16 + w_override_dlls native,builtin comm.drv16 + w_override_dlls native,builtin commctrl.dll16 + w_override_dlls native,builtin commdlg.dll16 + w_override_dlls native,builtin compobj.dll16 + w_override_dlls native,builtin ctl3d.dll16 + w_override_dlls native,builtin ctl3dv2.dll16 + w_override_dlls native,builtin ddeml.dll16 + w_override_dlls native,builtin dispdib.dll16 + w_override_dlls native,builtin display.drv16 + w_override_dlls native,builtin gdi.exe16 + w_override_dlls native,builtin keyboard.drv16 + w_override_dlls native,builtin krnl386.exe16 + w_override_dlls native,builtin lzexpand.dll16 + w_override_dlls native,builtin mmsystem.dll16 + w_override_dlls native,builtin mouse.drv16 + w_override_dlls native,builtin msacm.dll16 + w_override_dlls native,builtin msvideo.dll16 + w_override_dlls native,builtin nddeapi.dll16 + w_override_dlls native,builtin ole2.dll16 + w_override_dlls native,builtin ole2conv.dll16 + w_override_dlls native,builtin ole2disp.dll16 + w_override_dlls native,builtin ole2nls.dll16 + w_override_dlls native,builtin ole2prox.dll16 + w_override_dlls native,builtin ole2thk.dll16 + w_override_dlls native,builtin olecli.dll16 + w_override_dlls native,builtin olesvr.dll16 + w_override_dlls native,builtin regedit.exe16 + w_override_dlls native,builtin rmpatch.dll16 + w_override_dlls native,builtin shell.dll16 + w_override_dlls native,builtin sound.drv16 + w_override_dlls native,builtin storage.dll16 + w_override_dlls native,builtin system.drv16 + w_override_dlls native,builtin timer.drv16 + w_override_dlls native,builtin toolhelp.dll16 + w_override_dlls native,builtin typelib.dll16 + w_override_dlls native,builtin user.exe16 + w_override_dlls native,builtin ver.dll16 + w_override_dlls native,builtin wifeman.dll16 + w_override_dlls native,builtin win87em.dll16 + w_override_dlls native,builtin wing.dll16 + w_override_dlls native,builtin winnls.dll16 + w_override_dlls native,builtin winoldap.mod16 + w_override_dlls native,builtin winsock.dll16 + w_override_dlls native,builtin winspool.drv16 + w_override_dlls native,builtin wow32 +} + +w_metadata otvdm090 dlls \ + title="Otvdm - A modified version of winevdm as Win16 emulator" \ + publisher="otya128" \ + year="2024" \ + media="download" \ + file1="otvdm-v0.9.0.zip" + +load_otvdm090() +{ + w_download "https://github.com/otya128/winevdm/releases/download/v0.9.0/otvdm-v0.9.0.zip" 842b11aed5fa81f3e1d4272e0ee7d37f1a5a8f936de825309dda672835e16fd4 + helper_otvdm "${file1}" +} + +w_metadata otvdm dlls \ + title="Otvdm - A modified version of winevdm as Win16 emulator" \ + publisher="otya128" \ + year="2024" \ + media="download" + +load_otvdm() +{ + w_call otvdm090 +} + +#---------------------------------------------------------------- + w_metadata pdh dlls \ title="MS pdh.dll (Performance Data Helper)" \ publisher="Microsoft" \ @@ -11609,7 +12236,7 @@ w_metadata peverify dlls \ load_peverify() { - w_download_to dotnet20sdk https://download.microsoft.com/download/c/4/b/c4b15d7d-6f37-4d5a-b9c6-8f07e7d46635/setup.exe 1d7337bfbb2c65f43c82d188688ce152af403bcb67a2cc2a3cc68a580ecd8200 + w_download_to dotnet20sdk https://web.archive.org/web/20111102051348/https://download.microsoft.com/download/c/4/b/c4b15d7d-6f37-4d5a-b9c6-8f07e7d46635/setup.exe 1d7337bfbb2c65f43c82d188688ce152af403bcb67a2cc2a3cc68a580ecd8200 # Seems to require dotnet20; at least doesn't work if dotnet40 is installed instead w_call dotnet20 @@ -11926,6 +12553,7 @@ load_quicktime72() # in QuickTimePlayer. case ${LANG} in + bg*) w_warn "В настройките на Quicktime, включете Разширени / Безопасен режим (gdi), иначе видеоклиповете няма да се възпроизвеждат." ;; ru*) w_warn "В настройках Quicktime включите Дополнительно / Безопасный режим (только gdi), иначе видеофайлы не будут воспроизводиться." ;; pt*) w_warn "Nas preferências do Quicktime, marque Advanced / Safe Mode (gdi), ou os vídeos não irão reproduzir." ;; *) w_warn "In Quicktime preferences, check Advanced / Safe Mode (gdi), or movies won't play." ;; @@ -11965,6 +12593,7 @@ load_quicktime76() # in QuickTimePlayer. case ${LANG} in + bg*) w_warn "В настройките на Quicktime, включете Разширени / Безопасен режим (gdi), иначе видеоклиповете няма да се възпроизвеждат." ;; ru*) w_warn "В настройках Quicktime включите Дополнительно / Безопасный режим (только gdi), иначе видеофайлы не будут воспроизводиться." ;; pt*) w_warn "Nas preferências do Quicktime, marque Advanced / Safe Mode (gdi), ou os vídeos não irão reproduzir." ;; *) w_warn "In Quicktime preferences, check Advanced / Safe Mode (gdi), or movies won't play." ;; @@ -12207,7 +12836,7 @@ load_speechsdk() # If sapi.dll isn't in original location, applications won't start, see # e.g., https://bugs.winehq.org/show_bug.cgi?id=43841 - mkdir -p "${W_SYSTEM32_DLLS}/Speech/Common/" + w_try_mkdir "${W_SYSTEM32_DLLS}/Speech/Common/" w_try ln -s "${W_COMMONFILES_X86}/Microsoft Shared/Speech/sapi.dll" "${W_SYSTEM32_DLLS}/Speech/Common" w_override_dlls native sapi @@ -12235,6 +12864,33 @@ load_tabctl32() #---------------------------------------------------------------- +w_metadata uiribbon dlls \ + title="Windows UIRibbon" \ + publisher="Microsoft" \ + year="2011" \ + media="download" \ + file1="../win7sp1/windows6.1-KB976932-X86.exe" \ + installed_file1="${W_SYSTEM32_DLLS_WIN}/uiribbon.dll|${W_SYSTEM32_DLLS_WIN}/uiribbonres.dll" + +load_uiribbon() +{ + helper_win7sp1 x86_microsoft-windows-uiribbon_31bf3856ad364e35_6.1.7601.17514_none_74e4460571772695/uiribbon.dll + helper_win7sp1 x86_microsoft-windows-uiribbon_31bf3856ad364e35_6.1.7601.17514_none_74e4460571772695/uiribbonres.dll + w_try_cp_dll "${W_TMP}/x86_microsoft-windows-uiribbon_31bf3856ad364e35_6.1.7601.17514_none_74e4460571772695/uiribbon.dll" "${W_SYSTEM32_DLLS}/uiribbon.dll" + w_try_cp_dll "${W_TMP}/x86_microsoft-windows-uiribbon_31bf3856ad364e35_6.1.7601.17514_none_74e4460571772695/uiribbonres.dll" "${W_SYSTEM32_DLLS}/uiribbonres.dll" + + if [ "${W_ARCH}" = "win64" ]; then + helper_win7sp1_x64 amd64_microsoft-windows-uiribbon_31bf3856ad364e35_6.1.7601.17514_none_d102e18929d497cb/uiribbon.dll + helper_win7sp1_x64 amd64_microsoft-windows-uiribbon_31bf3856ad364e35_6.1.7601.17514_none_d102e18929d497cb/uiribbonres.dll + w_try_cp_dll "${W_TMP}/amd64_microsoft-windows-uiribbon_31bf3856ad364e35_6.1.7601.17514_none_d102e18929d497cb/uiribbon.dll" "${W_SYSTEM64_DLLS}/uiribbon.dll" + w_try_cp_dll "${W_TMP}/amd64_microsoft-windows-uiribbon_31bf3856ad364e35_6.1.7601.17514_none_d102e18929d497cb/uiribbonres.dll" "${W_SYSTEM64_DLLS}/uiribbonres.dll" + fi + + w_override_dlls native,builtin uiribbon +} + +#---------------------------------------------------------------- + w_metadata updspapi dlls \ title="Windows Update Service API" \ publisher="Microsoft" \ @@ -12313,7 +12969,7 @@ load_vb2run() { # Not referenced on MS web anymore, but the old Microsoft Software Library FTP still has it. # See ftp://ftp.microsoft.com/Softlib/index.txt - # 2014/05/31: Microsoft FTP is down ftp://$ftp_microsoft_com/Softlib/MSLFILES/VBRUN200.EXE + # 2014/05/31: Microsoft FTP is down ftp://ftp.microsoft.com/Softlib/MSLFILES/VBRUN200.EXE # 2015/08/10: chatnfiles is down, conradshome.com is up (and has a LOT of old MS installers archived!) # 2018/11/15: now conradshome is down ,but quaddicted.com also has it (and a lot more) w_download https://www.quaddicted.com/files/mirrors/ftp.planetquake.com/aoe/downloads/VBRUN200.EXE 4b0811d8fdcac1fd9411786c9119dc8d98d0540948211bdbc1ac682fbe5c0228 @@ -12494,8 +13150,8 @@ load_vcrun6sp6() w_download https://www.ddsystem.com.br/update/setup/vb6+sp6/VS6SP6.EXE 7fa1d1778824b55a5fceb02f45c399b5d4e4dce7403661e67e587b5f455edbf3 # extract the files instead of using installer to avoid https://github.com/Winetricks/winetricks/issues/1806 - w_try_cabextract "${W_CACHE}/${W_PACKAGE}/${file1}" -d "${W_TMP}" -F vcredist.exe - w_try_cabextract "${W_TMP}/vcredist.exe" -d "${W_TMP}" + w_try_cabextract -d "${W_TMP}" -F vcredist.exe "${W_CACHE}/${W_PACKAGE}/${file1}" + w_try_cabextract -d "${W_TMP}" "${W_TMP}/vcredist.exe" for dll in asycfilt.dll comcat.dll mfc42.dll mfc42u.dll msvcirt.dll msvcp60.dll msvcrt.dll oleaut32.dll olepro32.dll stdole2.tlb; do w_try mv "${W_TMP}/${dll}" "${W_SYSTEM32_DLLS}" @@ -12893,7 +13549,7 @@ w_metadata vcrun2015 dlls \ publisher="Microsoft" \ year="2015" \ media="download" \ - conflicts="vcrun2017 vcrun2019 ucrtbase2019" \ + conflicts="vcrun2017 vcrun2019 ucrtbase2019 vcrun2022" \ file1="vc_redist.x86.exe" \ installed_file1="${W_SYSTEM32_DLLS_WIN}/mfc140.dll" @@ -12906,6 +13562,7 @@ load_vcrun2015() w_override_dlls native,builtin api-ms-win-crt-private-l1-1-0 api-ms-win-crt-conio-l1-1-0 api-ms-win-crt-convert-l1-1-0 api-ms-win-crt-environment-l1-1-0 api-ms-win-crt-filesystem-l1-1-0 api-ms-win-crt-heap-l1-1-0 api-ms-win-crt-locale-l1-1-0 api-ms-win-crt-math-l1-1-0 api-ms-win-crt-multibyte-l1-1-0 api-ms-win-crt-process-l1-1-0 api-ms-win-crt-runtime-l1-1-0 api-ms-win-crt-stdio-l1-1-0 api-ms-win-crt-string-l1-1-0 api-ms-win-crt-utility-l1-1-0 api-ms-win-crt-time-l1-1-0 atl140 concrt140 msvcp140 msvcp140_1 msvcp140_atomic_wait ucrtbase vcomp140 vccorlib140 vcruntime140 vcruntime140_1 if w_workaround_wine_bug 50894 "Working around failing wusa.exe lookup via C:\windows\SysNative"; then + w_store_winver w_set_winver winxp fi @@ -12929,7 +13586,7 @@ load_vcrun2015() ;; esac - w_set_winver 'default' + w_restore_winver } w_metadata mfc140 dlls \ @@ -12942,7 +13599,7 @@ w_metadata mfc140 dlls \ load_mfc140() { - w_download_to vcrun2015 https://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x86.exe fdd1e1f0dcae2d0aa0720895eff33b927d13076e64464bb7c7e5843b7667cd14 + w_download_to vcrun2015 https://download.microsoft.com/download/6/D/F/6DF3FF94-F7F9-4F0B-838C-A328D1A7D0EE/vc_redist.x86.exe dafb8b5f4b46bfaf7faa1d0ad05211f5c9855f0005cd603f8b5037b6a708d6b6 w_try_cabextract --directory="${W_TMP}/win32" "${W_CACHE}"/vcrun2015/vc_redist.x86.exe -F 'a11' w_try_cabextract --directory="${W_TMP}/win32" "${W_TMP}/win32/a11" @@ -12953,7 +13610,7 @@ load_mfc140() w_try_cp_dll "${W_TMP}/win32"/mfcm140u.dll "${W_SYSTEM32_DLLS}"/mfcm140u.dll if [ "${W_ARCH}" = "win64" ]; then - w_download_to vcrun2015 https://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x64.exe 5eea714e1f22f1875c1cb7b1738b0c0b1f02aec5ecb95f0fdb1c5171c6cd93a3 + w_download_to vcrun2015 https://download.microsoft.com/download/6/D/F/6DF3FF94-F7F9-4F0B-838C-A328D1A7D0EE/vc_redist.x64.exe d7257265dbc0635c96dd67ddf938a09abe0866cb2d4fa05f8b758c8644e724e4 w_try_cabextract --directory="${W_TMP}/win64" "${W_CACHE}"/vcrun2015/vc_redist.x64.exe -F 'a11' w_try_cabextract --directory="${W_TMP}/win64" "${W_TMP}/win64/a11" @@ -12972,7 +13629,7 @@ w_metadata vcrun2017 dlls \ publisher="Microsoft" \ year="2017" \ media="download" \ - conflicts="vcrun2015 vcrun2019 ucrtbase2019" \ + conflicts="vcrun2015 vcrun2019 ucrtbase2019 vcrun2022" \ file1="vc_redist.x86.exe" \ installed_file1="${W_SYSTEM32_DLLS_WIN}/mfc140.dll" @@ -12987,6 +13644,7 @@ load_vcrun2017() w_override_dlls native,builtin api-ms-win-crt-private-l1-1-0 api-ms-win-crt-conio-l1-1-0 api-ms-win-crt-heap-l1-1-0 api-ms-win-crt-locale-l1-1-0 api-ms-win-crt-math-l1-1-0 api-ms-win-crt-runtime-l1-1-0 api-ms-win-crt-stdio-l1-1-0 api-ms-win-crt-time-l1-1-0 atl140 concrt140 msvcp140 msvcp140_1 msvcp140_2 msvcp140_atomic_wait ucrtbase vcamp140 vcomp140 vccorlib140 vcruntime140 vcruntime140_1 if w_workaround_wine_bug 50894 "Working around failing wusa.exe lookup via C:\windows\SysNative"; then + w_store_winver w_set_winver winxp fi @@ -13013,7 +13671,7 @@ load_vcrun2017() ;; esac - w_set_winver 'default' + w_restore_winver } #---------------------------------------------------------------- @@ -13023,7 +13681,7 @@ w_metadata vcrun2019 dlls \ publisher="Microsoft" \ year="2019" \ media="download" \ - conflicts="vcrun2015 vcrun2017" \ + conflicts="vcrun2015 vcrun2017 vcrun2022" \ file1="vc_redist.x86.exe" \ installed_file1="${W_SYSTEM32_DLLS_WIN}/mfc140.dll" @@ -13044,12 +13702,13 @@ load_vcrun2019() # 2021/08/26: 1acd8d5ea1cdc3eb2eb4c87be3ab28722d0825c15449e5c9ceef95d897de52fa # 2021/10/23: 80c7969f4e05002a0cd820b746e0acb7406d4b85e52ef096707315b390927824 # 2022/01/18: 4c6c420cf4cbf2c9c9ed476e96580ae92a97b2822c21329a2e49e8439ac5ad30 - + # 2023/12/30: 29f649c08928b31e6bb11d449626da14b5e99b5303fe2b68afa63732ef29c946 w_override_dlls native,builtin api-ms-win-crt-private-l1-1-0 api-ms-win-crt-conio-l1-1-0 api-ms-win-crt-heap-l1-1-0 api-ms-win-crt-locale-l1-1-0 api-ms-win-crt-math-l1-1-0 api-ms-win-crt-runtime-l1-1-0 api-ms-win-crt-stdio-l1-1-0 api-ms-win-crt-time-l1-1-0 atl140 concrt140 msvcp140 msvcp140_1 msvcp140_2 msvcp140_atomic_wait msvcp140_codecvt_ids vcamp140 vccorlib140 vcomp140 vcruntime140 - w_download https://aka.ms/vs/16/release/vc_redist.x86.exe 4c6c420cf4cbf2c9c9ed476e96580ae92a97b2822c21329a2e49e8439ac5ad30 + w_download https://aka.ms/vs/16/release/vc_redist.x86.exe 29f649c08928b31e6bb11d449626da14b5e99b5303fe2b68afa63732ef29c946 if w_workaround_wine_bug 50894 "Working around failing wusa.exe lookup via C:\windows\SysNative"; then + w_store_winver w_set_winver winxp fi @@ -13073,18 +13732,19 @@ load_vcrun2019() # 2021/08/26: 003063723b2131da23f40e2063fb79867bae275f7b5c099dbd1792e25845872b # 2021/10/23: 9b9dd72c27ab1db081de56bb7b73bee9a00f60d14ed8e6fde45dab3e619b5f04 # 2022/01/18: 296f96cd102250636bcd23ab6e6cf70935337b1bbb3507fe8521d8d9cfaa932f + # 2023/12/30: cee28f29f904524b7f645bcec3dfdfe38f8269b001144cd909f5d9232890d33b # vcruntime140_1 is only shipped on x64: w_override_dlls native,builtin vcruntime140_1 - w_download https://aka.ms/vs/16/release/vc_redist.x64.exe 296f96cd102250636bcd23ab6e6cf70935337b1bbb3507fe8521d8d9cfaa932f + w_download https://aka.ms/vs/16/release/vc_redist.x64.exe cee28f29f904524b7f645bcec3dfdfe38f8269b001144cd909f5d9232890d33b w_try_ms_installer "${WINE}" vc_redist.x64.exe ${W_OPT_UNATTENDED:+/q} ;; esac w_call ucrtbase2019 - w_set_winver 'default' + w_restore_winver } #---------------------------------------------------------------- @@ -13121,21 +13781,64 @@ load_ucrtbase2019() #---------------------------------------------------------------- -w_metadata vjrun20 dlls \ - title="MS Visual J# 2.0 SE libraries (requires dotnet20)" \ +w_metadata vcrun2022 dlls \ + title="Visual C++ 2015-2022 libraries (concrt140.dll,mfc140.dll,mfc140chs.dll,mfc140cht.dll,mfc140deu.dll,mfc140enu.dll,mfc140esn.dll,mfc140fra.dll,mfc140ita.dll,mfc140jpn.dll,mfc140kor.dll,mfc140rus.dll,mfc140u.dll,mfcm140.dll,mfcm140u.dll,msvcp140.dll,msvcp140_1.dll,msvcp140_2.dll,msvcp140_atomic_wait.dll,msvcp140_codecvt_ids.dll,vcamp140.dll,vccorlib140.dll,vcomp140.dll,vcruntime140.dll,vcruntime140_1.dll)" \ publisher="Microsoft" \ - year="2007" \ + year="2022" \ media="download" \ - file1="vjredist.exe" \ - installed_file1="${W_WINDIR_WIN}/Microsoft.NET/Framework/VJSharp/VJSharpSxS10.dll" + conflicts="vcrun2015 vcrun2017 vcrun2019" \ + file1="vc_redist.x86.exe" \ + installed_file1="${W_SYSTEM32_DLLS_WIN}/vcruntime140.dll" -load_vjrun20() +load_vcrun2022() { - w_package_unsupported_win64 + # https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist + # 2022-08-05: 14.32.31332 @ https://download.visualstudio.microsoft.com/download/pr/7331f052-6c2d-4890-8041-8058fee5fb0f/CF92A10C62FFAB83B4A2168F5F9A05E5588023890B5C0CC7BA89ED71DA527B0F/VC_redist.x86.exe cf92a10c62ffab83b4a2168f5f9a05e5588023890b5c0cc7ba89ed71da527b0f + # 2023-04-30: 14.34.31938 @ https://download.visualstudio.microsoft.com/download/pr/b2519016-4a13-4120-936c-cae003d567c4/8AE59D82845159DB3A70763F5CB1571E45EBF6A1ADFECC47574BA17B019483A0/VC_redist.x86.exe 8ae59d82845159db3a70763f5cb1571e45ebf6a1adfecc47574ba17b019483a0 + # 2023/07/04: 14.36.32532 @ https://download.visualstudio.microsoft.com/download/pr/eaab1f82-787d-4fd7-8c73-f782341a0c63/5365A927487945ECB040E143EA770ADBB296074ECE4021B1D14213BDE538C490/VC_redist.x86.exe 5365a927487945ecb040e143ea770adbb296074ece4021b1d14213bde538c490 + # 2023/12/30: c61cef97487536e766130fa8714dd1b4143f6738bfb71806018eee1b5fe6f057 + # 2024/02/11: 510fc8c2112e2bc544fb29a72191eabcc68d3a5a7468d35d7694493bc8593a79 + w_override_dlls native,builtin concrt140 msvcp140 msvcp140_1 msvcp140_2 msvcp140_atomic_wait msvcp140_codecvt_ids vcamp140 vccorlib140 vcomp140 vcruntime140 - w_call dotnet20 + w_download https://aka.ms/vs/17/release/vc_redist.x86.exe 510fc8c2112e2bc544fb29a72191eabcc68d3a5a7468d35d7694493bc8593a79 - # See https://www.microsoft.com/en-us/download/details.aspx?id=18084 + w_try_cd "${W_CACHE}"/"${W_PACKAGE}" + w_try_ms_installer "${WINE}" vc_redist.x86.exe ${W_OPT_UNATTENDED:+/q} + + case "${W_ARCH}" in + win64) + # Also install the 64-bit version + # 2022/08/05: 14.32.31332 @ https://download.visualstudio.microsoft.com/download/pr/7331f052-6c2d-4890-8041-8058fee5fb0f/CE6593A1520591E7DEA2B93FD03116E3FC3B3821A0525322B0A430FAA6B3C0B4/VC_redist.x64.exe 8ae59d82845159db3a70763f5cb1571e45ebf6a1adfecc47574ba17b019483a0 + # 2023/04/30: 14.34.31938 @ https://download.visualstudio.microsoft.com/download/pr/8b92f460-7e03-4c75-a139-e264a770758d/26C2C72FBA6438F5E29AF8EBC4826A1E424581B3C446F8C735361F1DB7BEFF72/VC_redist.x64.exe 26c2c72fba6438f5e29af8ebc4826a1e424581b3c446f8c735361f1db7beff72 + # 2023/07/04: 14.36.32532 @ https://download.visualstudio.microsoft.com/download/pr/eaab1f82-787d-4fd7-8c73-f782341a0c63/917C37D816488545B70AFFD77D6E486E4DD27E2ECE63F6BBAAF486B178B2B888/VC_redist.x64.exe 917c37d816488545b70affd77d6e486e4dd27e2ece63f6bbaaf486b178b2b888 + # 2023/12/30: 4dfe83c91124cd542f4222fe2c396cabeac617bb6f59bdcbdf89fd6f0df0a32f + # 2024/02/11: 1ad7988c17663cc742b01bef1a6df2ed1741173009579ad50a94434e54f56073 + # vcruntime140_1 is only shipped on x64: + w_override_dlls native,builtin vcruntime140_1 + + w_download https://aka.ms/vs/17/release/vc_redist.x64.exe 1ad7988c17663cc742b01bef1a6df2ed1741173009579ad50a94434e54f56073 + w_try_ms_installer "${WINE}" vc_redist.x64.exe ${W_OPT_UNATTENDED:+/q} + ;; + esac +} + +#---------------------------------------------------------------- + +w_metadata vjrun20 dlls \ + title="MS Visual J# 2.0 SE libraries (requires dotnet20)" \ + publisher="Microsoft" \ + year="2007" \ + media="download" \ + file1="vjredist.exe" \ + installed_file1="${W_WINDIR_WIN}/Microsoft.NET/Framework/VJSharp/VJSharpSxS10.dll" + +load_vjrun20() +{ + w_package_unsupported_win64 + + w_call dotnet20 + + # See https://www.microsoft.com/en-us/download/details.aspx?id=18084 w_download https://web.archive.org/web/20200803205240/https://download.microsoft.com/download/9/2/3/92338cd0-759f-4815-8981-24b437be74ef/vjredist.exe cf8f3dd4ad41453a302870b74de1c6489e7ed255ad3f652ce4af0b424a933b41 w_try_cd "${W_CACHE}"/"${W_PACKAGE}" w_try "${WINE}" vjredist.exe ${W_OPT_UNATTENDED:+/q /C:"install /qnt"} @@ -13223,6 +13926,7 @@ load_windowscodecs() w_override_dlls native windowscodecs windowscodecsext # Previously this was winxp, but that didn't work for 64-bit, see https://github.com/Winetricks/winetricks/issues/970 + w_store_winver w_set_winver win2k3 # Always run the WIC installer in passive mode. @@ -13237,7 +13941,7 @@ load_windowscodecs() w_try "${WINE}" "${EXE}" /passive fi - w_set_winver 'default' + w_restore_winver } #---------------------------------------------------------------- @@ -13327,6 +14031,7 @@ load_wmi() # 2019/12/22: all ftp mirrors I found are dead, so use wayback machine for original MS url w_download https://web.archive.org/web/20051221074940/https://download.microsoft.com/download/platformsdk/wmi9x/1.5/W9X/EN-US/wmi9x.exe 1d5d94050354b164c6a19531df151e0703d5eb39cebf4357ee2cfc340c2509d0 + w_store_winver w_set_winver win98 w_override_dlls native,builtin wbemprox wmiutils @@ -13335,7 +14040,7 @@ load_wmi() w_try "${WINE}" wmi9x.exe ${W_OPT_UNATTENDED:+/S} w_killall "WinMgmt.exe" - w_set_winver 'default' + w_restore_winver } #---------------------------------------------------------------- @@ -13420,6 +14125,7 @@ load_xact() w_override_dlls native,builtin xaudio2_0 xaudio2_1 xaudio2_2 xaudio2_3 xaudio2_4 xaudio2_5 xaudio2_6 xaudio2_7 w_override_dlls native,builtin x3daudio1_0 x3daudio1_1 x3daudio1_2 x3daudio1_3 x3daudio1_4 x3daudio1_5 x3daudio1_6 x3daudio1_7 w_override_dlls native,builtin xapofx1_1 xapofx1_2 xapofx1_3 xapofx1_4 xapofx1_5 + w_override_dlls native,builtin xactengine2_0 xactengine2_10 xactengine2_1 xactengine2_2 xactengine2_3 xactengine2_4 xactengine2_5 xactengine2_6 xactengine2_7 xactengine2_8 xactengine2_9 xactengine3_0 xactengine3_1 xactengine3_2 xactengine3_3 xactengine3_4 xactengine3_5 xactengine3_6 xactengine3_7 # Register xactengine?_?.dll for x in "${W_SYSTEM32_DLLS}"/xactengine* ; do @@ -13466,6 +14172,7 @@ load_xact_x64() w_override_dlls native,builtin xaudio2_0 xaudio2_1 xaudio2_2 xaudio2_3 xaudio2_4 xaudio2_5 xaudio2_6 xaudio2_7 w_override_dlls native,builtin x3daudio1_0 x3daudio1_1 x3daudio1_2 x3daudio1_3 x3daudio1_4 x3daudio1_5 x3daudio1_6 x3daudio1_7 w_override_dlls native,builtin xapofx1_1 xapofx1_2 xapofx1_3 xapofx1_4 xapofx1_5 + w_override_dlls native,builtin xactengine2_0 xactengine2_10 xactengine2_1 xactengine2_2 xactengine2_3 xactengine2_4 xactengine2_5 xactengine2_6 xactengine2_7 xactengine2_8 xactengine2_9 xactengine3_0 xactengine3_1 xactengine3_2 xactengine3_3 xactengine3_4 xactengine3_5 xactengine3_6 xactengine3_7 # Register xactengine?_?.dll for x in "${W_SYSTEM64_DLLS}"/xactengine* ; do @@ -13480,6 +14187,30 @@ load_xact_x64() #---------------------------------------------------------------- +w_metadata xaudio29 dlls \ + title="MS XAudio Redistributable 2.9" \ + publisher="Microsoft" \ + year="2023" \ + media="download" \ + file1="microsoft.xaudio2.redist.1.2.11.nupkg" \ + installed_file1="${W_SYSTEM32_DLLS_WIN}/xaudio2_9.dll" + +load_xaudio29() +{ + w_download https://www.nuget.org/api/v2/package/Microsoft.XAudio2.Redist/1.2.11 4552e0b5b59de0cdbc6c217261c45f5968f7bbf1e8ab5f208e4bca6fd8fc5780 microsoft.xaudio2.redist.1.2.11.nupkg + + w_try_unzip "${W_TMP}" "${W_CACHE}/${W_PACKAGE}/${file1}" + w_try_cp_dll "${W_TMP}/build/native/release/bin/x86/xaudio2_9redist.dll" "${W_SYSTEM32_DLLS}/xaudio2_9.dll" + + if [ "${W_ARCH}" = "win64" ]; then + w_try_cp_dll "${W_TMP}/build/native/release/bin/x64/xaudio2_9redist.dll" "${W_SYSTEM64_DLLS}/xaudio2_9.dll" + fi + + w_override_dlls native,builtin xaudio2_9 +} + +#---------------------------------------------------------------- + w_metadata xinput dlls \ title="Microsoft XInput (Xbox controller support)" \ publisher="Microsoft" \ @@ -13579,18 +14310,19 @@ load_xna40() w_metadata xvid dlls \ title="Xvid Video Codec" \ publisher="xvid.org" \ - year="2009" \ + year="2019" \ media="download" \ - file1="Xvid-1.3.2-20110601.exe" \ + file1="Xvid-1.3.7-20191228.exe" \ installed_file1="${W_PROGRAMS_X86_WIN}/Xvid/xvid.ico" load_xvid() { w_call vcrun6 - # 2011/06/03: http://www.koepi.info/Xvid-1.3.2-20110601.exe - # 2022/09/08: https://s3.amazonaws.com/moviecodec/files/Xvid-1.3.2-20110601.exe - w_download https://s3.amazonaws.com/moviecodec/files/Xvid-1.3.2-20110601.exe 74b23965cebe59e388eab6dba224b6b751ef4519454cc12086ade51c81f0a33c + w_download https://downloads.xvid.com/downloads/Xvid-1.3.7-20191228.exe 7997cb88db3331191042eef5238fbf2eba44b9d244f43554a712996eba2fff49 w_try_cd "${W_CACHE}/${W_PACKAGE}" + # This will give a warning about Windows Media Player being out of date. + # Turns out it's not checking the wmp version, but the presence of ${W_SYSTEM32_DLLS}/l3codecp.acm + # http://websvn.xvid.org/cvs/viewvc.cgi/trunk/xvidextra/src/installer/xvid.xml?view=diff&pathrev=2159&r1=2006&r2=2007 w_try "${WINE}" "${file1}" ${W_OPT_UNATTENDED:+ --mode unattended --decode_divx 1 --decode_3ivx 1 --decode_other 1} } @@ -13813,7 +14545,7 @@ w_metadata andale fonts \ load_andale() { - w_download_to corefonts "https://mirrors.kernel.org/gentoo/distfiles/andale32.exe" 0524fe42951adc3a7eb870e32f0920313c71f170c859b5f770d82b4ee111e970 + w_download_to corefonts "https://github.com/pushcx/corefonts/raw/master/andale32.exe" 0524fe42951adc3a7eb870e32f0920313c71f170c859b5f770d82b4ee111e970 w_try_cabextract -d "${W_TMP}" "${W_CACHE}"/corefonts/andale32.exe w_try_cp_font_files "${W_TMP}" "${W_FONTSDIR_UNIX}" "AndaleMo.TTF" w_register_font andalemo.ttf "Andale Mono" @@ -13831,8 +14563,8 @@ w_metadata arial fonts \ load_arial() { - w_download_to corefonts "https://mirrors.kernel.org/gentoo/distfiles/arial32.exe" 85297a4d146e9c87ac6f74822734bdee5f4b2a722d7eaa584b7f2cbf76f478f6 - w_download_to corefonts "https://mirrors.kernel.org/gentoo/distfiles/arialb32.exe" a425f0ffb6a1a5ede5b979ed6177f4f4f4fdef6ae7c302a7b7720ef332fec0a8 + w_download_to corefonts "https://github.com/pushcx/corefonts/raw/master/arial32.exe" 85297a4d146e9c87ac6f74822734bdee5f4b2a722d7eaa584b7f2cbf76f478f6 + w_download_to corefonts "https://github.com/pushcx/corefonts/raw/master/arialb32.exe" a425f0ffb6a1a5ede5b979ed6177f4f4f4fdef6ae7c302a7b7720ef332fec0a8 w_try_cabextract -d "${W_TMP}" "${W_CACHE}"/corefonts/arial32.exe w_try_cp_font_files "${W_TMP}" "${W_FONTSDIR_UNIX}" "Arial*.TTF" @@ -13858,7 +14590,7 @@ w_metadata comicsans fonts \ load_comicsans() { - w_download_to corefonts "https://mirrors.kernel.org/gentoo/distfiles/comic32.exe" 9c6df3feefde26d4e41d4a4fe5db2a89f9123a772594d7f59afd062625cd204e + w_download_to corefonts "https://github.com/pushcx/corefonts/raw/master/comic32.exe" 9c6df3feefde26d4e41d4a4fe5db2a89f9123a772594d7f59afd062625cd204e w_try_cabextract -d "${W_TMP}" "${W_CACHE}"/corefonts/comic32.exe w_try_cp_font_files "${W_TMP}" "${W_FONTSDIR_UNIX}" "Comic*.TTF" w_register_font comicbd.ttf "Comic Sans MS Bold" @@ -13876,7 +14608,7 @@ w_metadata courier fonts \ installed_file1="${W_FONTSDIR_WIN}/cour.ttf" load_courier() { - w_download_to corefonts "https://mirrors.kernel.org/gentoo/distfiles/courie32.exe" bb511d861655dde879ae552eb86b134d6fae67cb58502e6ff73ec5d9151f3384 + w_download_to corefonts "https://github.com/pushcx/corefonts/raw/master/courie32.exe" bb511d861655dde879ae552eb86b134d6fae67cb58502e6ff73ec5d9151f3384 w_try_cabextract -d "${W_TMP}" "${W_CACHE}"/corefonts/courie32.exe w_try_cp_font_files "${W_TMP}" "${W_FONTSDIR_UNIX}" "cour*.ttf" w_register_font courbd.ttf "Courier New Bold" @@ -13896,7 +14628,7 @@ w_metadata georgia fonts \ installed_file1="${W_FONTSDIR_WIN}/georgia.ttf" load_georgia() { - w_download_to corefonts "https://mirrors.kernel.org/gentoo/distfiles/georgi32.exe" 2c2c7dcda6606ea5cf08918fb7cd3f3359e9e84338dc690013f20cd42e930301 + w_download_to corefonts "https://github.com/pushcx/corefonts/raw/master/georgi32.exe" 2c2c7dcda6606ea5cf08918fb7cd3f3359e9e84338dc690013f20cd42e930301 w_try_cabextract -d "${W_TMP}" "${W_CACHE}"/corefonts/georgi32.exe w_try_cp_font_files "${W_TMP}" "${W_FONTSDIR_UNIX}" "Georgia*.TTF" w_register_font georgiab.ttf "Georgia Bold" @@ -13917,7 +14649,7 @@ w_metadata impact fonts \ load_impact() { - w_download_to corefonts "https://mirrors.kernel.org/gentoo/distfiles/impact32.exe" 6061ef3b7401d9642f5dfdb5f2b376aa14663f6275e60a51207ad4facf2fccfb + w_download_to corefonts "https://github.com/pushcx/corefonts/raw/master/impact32.exe" 6061ef3b7401d9642f5dfdb5f2b376aa14663f6275e60a51207ad4facf2fccfb w_try_cabextract -d "${W_TMP}" "${W_CACHE}"/corefonts/impact32.exe w_try_cp_font_files "${W_TMP}" "${W_FONTSDIR_UNIX}" "Impact.TTF" w_register_font impact.ttf "Impact" @@ -13935,7 +14667,7 @@ w_metadata times fonts \ load_times() { - w_download_to corefonts "https://mirrors.kernel.org/gentoo/distfiles/times32.exe" db56595ec6ef5d3de5c24994f001f03b2a13e37cee27bc25c58f6f43e8f807ab + w_download_to corefonts "https://github.com/pushcx/corefonts/raw/master/times32.exe" db56595ec6ef5d3de5c24994f001f03b2a13e37cee27bc25c58f6f43e8f807ab w_try_cabextract -d "${W_TMP}" "${W_CACHE}"/corefonts/times32.exe w_try_cp_font_files "${W_TMP}" "${W_FONTSDIR_UNIX}" "Times*.TTF" w_register_font timesbd.ttf "Times New Roman Bold" @@ -13956,7 +14688,7 @@ w_metadata trebuchet fonts \ load_trebuchet() { - w_download_to corefonts "https://mirrors.kernel.org/gentoo/distfiles/trebuc32.exe" 5a690d9bb8510be1b8b4fe49f1f2319651fe51bbe54775ddddd8ef0bd07fdac9 + w_download_to corefonts "https://github.com/pushcx/corefonts/raw/master/trebuc32.exe" 5a690d9bb8510be1b8b4fe49f1f2319651fe51bbe54775ddddd8ef0bd07fdac9 w_try_cabextract -d "${W_TMP}" "${W_CACHE}"/corefonts/trebuc32.exe w_try_cp_font_files "${W_TMP}" "${W_FONTSDIR_UNIX}" "[tT]rebuc*.ttf" w_register_font trebucbd.ttf "Trebuchet MS Bold" @@ -13977,7 +14709,7 @@ w_metadata verdana fonts \ load_verdana() { - w_download_to corefonts "https://mirrors.kernel.org/gentoo/distfiles/verdan32.exe" c1cb61255e363166794e47664e2f21af8e3a26cb6346eb8d2ae2fa85dd5aad96 + w_download_to corefonts "https://github.com/pushcx/corefonts/raw/master//verdan32.exe" c1cb61255e363166794e47664e2f21af8e3a26cb6346eb8d2ae2fa85dd5aad96 w_try_cabextract -d "${W_TMP}" "${W_CACHE}"/corefonts/verdan32.exe w_try_cp_font_files "${W_TMP}" "${W_FONTSDIR_UNIX}" "Verdana*.TTF" w_register_font verdanab.ttf "Verdana Bold" @@ -13998,7 +14730,7 @@ w_metadata webdings fonts \ load_webdings() { - w_download_to corefonts "https://mirrors.kernel.org/gentoo/distfiles/webdin32.exe" 64595b5abc1080fba8610c5c34fab5863408e806aafe84653ca8575bed17d75a + w_download_to corefonts "https://github.com/pushcx/corefonts/raw/master/webdin32.exe" 64595b5abc1080fba8610c5c34fab5863408e806aafe84653ca8575bed17d75a w_try_cabextract -d "${W_TMP}" "${W_CACHE}"/corefonts/webdin32.exe w_try_cp_font_files "${W_TMP}" "${W_FONTSDIR_UNIX}" "Webdings.TTF" w_register_font webdings.ttf "Webdings" @@ -14347,10 +15079,10 @@ load_lucida() w_metadata opensymbol fonts \ title="OpenSymbol fonts (replacement for Wingdings)" \ - publisher="OpenOffice.org" \ - year="2017" \ + publisher="libreoffice.org" \ + year="2022" \ media="download" \ - file1="fonts-opensymbol_102.10+LibO6.1.5-3+deb10u4_all.deb" \ + file1="fonts-opensymbol_102.12+LibO7.6.4~rc1-1~bpo12+1_all.deb" \ installed_file1="${W_FONTSDIR_WIN}/opens___.ttf" load_opensymbol() @@ -14358,11 +15090,11 @@ load_opensymbol() # The OpenSymbol fonts are a replacement for the Windows Wingdings font from OpenOffice.org. # Need to w_download Debian since I can't find a standalone download from OpenOffice # Note: The source download package on debian is for _all_ of OpenOffice, which is 266 MB. - w_download "https://cdn-aws.deb.debian.org/debian-security/pool/updates/main/libr/libreoffice/fonts-opensymbol_102.10+LibO6.1.5-3+deb10u4_all.deb" 1b2ab1e8eeb9a3a4a07e4a1c9bf539bb721734bf8b9881f4d0b8e71e822cecde + w_download http://ftp.us.debian.org/debian/pool/main/libr/libreoffice/fonts-opensymbol_102.12+LibO7.6.4~rc1-1~bpo12+1_all.deb e35e57a0a703fe656230a30c7675a5c5c4772a11c6f650634765234d1f0fa35f w_try_cd "${W_TMP}" w_try_ar "${W_CACHE}/${W_PACKAGE}/${file1}" data.tar.xz - w_try tar -Jxf "${W_TMP}/data.tar.xz" ./usr/share/fonts/truetype/openoffice/opens___.ttf - w_try_cp_font_files "usr/share/fonts/truetype/openoffice" "${W_FONTSDIR_UNIX}" + w_try tar -Jxf "${W_TMP}/data.tar.xz" ./usr/share/fonts/truetype/libreoffice/opens___.ttf + w_try_cp_font_files "usr/share/fonts/truetype/libreoffice" "${W_FONTSDIR_UNIX}" w_register_font opens___.ttf "OpenSymbol" } @@ -14517,7 +15249,7 @@ w_metadata vlgothic fonts \ load_vlgothic() { - w_download "https://ja.osdn.net/projects/vlgothic/downloads/62375/VLGothic-20141206.tar.xz" 982040db2f9cb73d7c6ab7d9d163f2ed46d1180f330c9ba2fae303649bf8102d + w_download "https://mirrors.gigenet.com/OSDN/vlgothic/62375/VLGothic-20141206.tar.xz" 982040db2f9cb73d7c6ab7d9d163f2ed46d1180f330c9ba2fae303649bf8102d w_try_cd "${W_TMP}" w_try tar -Jxf "${W_CACHE}/vlgothic/VLGothic-20141206.tar.xz" @@ -14702,16 +15434,11 @@ load_adobe_diged4() #w_call win7 w_try_cd "${W_CACHE}/${W_PACKAGE}" - if w_workaround_wine_bug 46019 "Installer fails under wine, manually unpacking it instead" ,4.6; then + if test "${W_OPT_UNATTENDED}"; then + # Silent install (/S) pops up an advertisement that AHK has trouble dismissing w_try_7z "${W_PROGRAMS_X86_UNIX}/Adobe/Adobe Digital Editions 4.5" "${file1}" -y else - w_ahk_do " - SetTitleMatchMode, 2 - run, ${file1} ${W_OPT_UNATTENDED:+ /S} - winwait, Installing Adobe Digital Editions - ControlClick, Button1 ; Don't install Norton Internet Security - ControlClick, Static19 ; Next - " + "${WINE}" "${file1}" fi } @@ -14788,7 +15515,7 @@ load_colorprofile() w_try_unzip "${W_TMP}" "${W_CACHE}"/colorprofile/ColorProfile.exe # It's in system32 for both win32/win64 - mkdir -p "${W_WINDIR_UNIX}"/system32/spool/drivers/color + w_try_mkdir "${W_WINDIR_UNIX}"/system32/spool/drivers/color w_try cp -f "${W_TMP}/sRGB Color Space Profile.icm" "${W_WINDIR_UNIX}"/system32/spool/drivers/color } @@ -14835,7 +15562,7 @@ load_controlspy() # 2019/04/11: changed to https://github.com/pywinauto/pywinauto/blob/master/apps/ControlSpy_20/ControlSpyV6.exe # Unfortunately that means no V5 of ControlSpy :/ w_download https://github.com/pywinauto/pywinauto/blob/master/apps/ControlSpy_20/ControlSpyV6.exe - w_try mkdir -p "${W_PROGRAMS_X86_UNIX}/Microsoft/ControlSpy" + w_try_mkdir "${W_PROGRAMS_X86_UNIX}/Microsoft/ControlSpy" w_try cp "${W_CACHE}/${W_PACKAGE}/${file1}" "${W_PROGRAMS_X86_UNIX}/Microsoft/ControlSpy" } @@ -14859,7 +15586,7 @@ load_dxdiag() w_try_cabextract -d "${W_TMP}" -L -F dxnt.cab "${W_CACHE}"/directx9/${DIRECTX_NAME} w_try_cabextract -d "${W_SYSTEM32_DLLS}" -L -F "dxdiag.exe" "${W_TMP}/dxnt.cab" - mkdir -p "${W_WINDIR_UNIX}/help" + w_try_mkdir "${W_WINDIR_UNIX}/help" w_try_cabextract -d "${W_WINDIR_UNIX}/help" -L -F "dxdiag.chm" "${W_TMP}/dxnt.cab" w_override_dlls native dxdiag.exe @@ -14883,7 +15610,7 @@ w_metadata dxwnd apps \ publisher="ghotik" \ year="2011" \ media="download" \ - file1"v2_05_88_build.rar" \ + file1="v2_05_88_build.rar" \ installed_exe1="${W_PROGRAMS_X86_WIN}/dxwnd/dxwnd.exe" \ homepage="https://dxwnd.sourceforge.io" @@ -15167,6 +15894,7 @@ load_ie6() done # The installer doesn't want to install iexplore.exe in XP mode. + w_store_winver w_set_winver win2k # Workaround https://bugs.winehq.org/show_bug.cgi?id=21009 @@ -15198,11 +15926,11 @@ load_ie6() shdocvw.dll shell32.dll vbscript.dll webcheck.dll \ wshcon.dll wshext.dll asctrls.ocx hhctrl.ocx mscomct2.ocx \ plugin.ocx proctexe.ocx tdc.ocx webcheck.dll wshom.ocx; do - "${WINE}" regsvr32 /i ${i} > /dev/null 2>&1 + w_try_regsvr32 /i ${i} > /dev/null 2>&1 done # Set Windows version back to the default. Leave at win2k for better rendering (is there a bug for that?) - w_set_winver 'default' + w_restore_winver # the ie6 we use these days lacks pngfilt, so grab that w_call pngfilt @@ -15254,7 +15982,7 @@ load_ie7() w_download https://github.com/Winetricks/winetricks/raw/master/files/winetest.cat 5d18ab44fc289100ccf4b51cf614cc2d36f7ca053e557e2ba973811293c97d38 # Put a dummy catalog file in place - mkdir -p "${W_SYSTEM32_DLLS}"/catroot/\{f750e6c3-38ee-11d1-85e5-00c04fc295ee\} + w_try_mkdir "${W_SYSTEM32_DLLS}"/catroot/\{f750e6c3-38ee-11d1-85e5-00c04fc295ee\} w_try cp -f "${W_CACHE}"/ie7/winetest.cat "${W_SYSTEM32_DLLS}"/catroot/\{f750e6c3-38ee-11d1-85e5-00c04fc295ee\}/oem0.cat # KLUDGE: if / is writable (as on OS X?), having a Z: mapping to it @@ -15295,7 +16023,7 @@ load_ie7() shdocvw.dll shell32.dll urlmon.dll vbscript.dll webcheck.dll \ wshcon.dll wshext.dll asctrls.ocx hhctrl.ocx mscomct2.ocx \ plugin.ocx proctexe.ocx tdc.ocx webcheck.dll wshom.ocx; do - "${WINE}" regsvr32 /i ${i} > /dev/null 2>&1 + w_try_regsvr32 /i ${i} > /dev/null 2>&1 done # Builtin ieproxy is in system32, but ie7's lives in Program Files. Native @@ -15331,6 +16059,7 @@ w_metadata ie8 dlls \ load_ie8() { + w_store_winver if [ "${W_ARCH}" = "win32" ]; then # Bundled in Windows 7, so refuses to install. Works with XP: w_set_winver winxp @@ -15362,7 +16091,7 @@ load_ie8() w_download https://github.com/Winetricks/winetricks/raw/master/files/winetest.cat 5d18ab44fc289100ccf4b51cf614cc2d36f7ca053e557e2ba973811293c97d38 # Put a dummy catalog file in place - mkdir -p "${W_SYSTEM32_DLLS}"/catroot/\{f750e6c3-38ee-11d1-85e5-00c04fc295ee\} + w_try_mkdir "${W_SYSTEM32_DLLS}"/catroot/\{f750e6c3-38ee-11d1-85e5-00c04fc295ee\} w_try cp -f "${W_CACHE}"/ie8/winetest.cat "${W_SYSTEM32_DLLS}"/catroot/\{f750e6c3-38ee-11d1-85e5-00c04fc295ee\}/oem0.cat if [ "${W_ARCH}" = "win32" ]; then @@ -15439,12 +16168,16 @@ load_ie8() shdocvw.dll shell32.dll urlmon.dll vbscript.dll webcheck.dll \ wshcon.dll wshext.dll asctrls.ocx hhctrl.ocx mscomct2.ocx \ plugin.ocx proctexe.ocx tdc.ocx uxtheme.dll webcheck.dll wshom.ocx; do - "${WINE}" regsvr32 /i ${i} > /dev/null 2>&1 - if [ "${W_ARCH}" = "win64" ]; then - "${WINE64}" regsvr32 /i ${i} > /dev/null 2>&1 - fi + w_try_regsvr32 /i ${i} > /dev/null 2>&1 done + # only a few dlls register for win64? + if [ "${W_ARCH}" = "win64" ]; then + for i in browseui.dll shdocvw.dll shell32.dll urlmon.dll; do + w_try_regsvr64 /i ${i} > /dev/null 2>&1 + done + fi + if w_workaround_wine_bug 25648 "Setting TabProcGrowth=0 to avoid hang"; then cat > "${W_TMP}"/set-tabprocgrowth.reg <<_EOF_ REGEDIT4 @@ -15484,10 +16217,10 @@ _EOF_ if [ "${W_ARCH}" = "win32" ]; then w_warn "To start ie8, from a terminal shell, use the command \"${WINE}\" '${W_PROGRAMS_WIN}\\\\Internet Explorer\\\\iexplore.exe'" else - w_warn "To start ie8 (32-bit), from a terminal shell, use the command \"${WINE}\" '${W_PROGRAMS_X86_WIN}\\\\Internet Explorer\\\\iexplore.exe'\nTo start ie8 (64-bit), from a terminal shell, use the command \"${WINE}\" '${W_PROGRAMS_WIN}\\\\Internet Explorer\\\\iexplore.exe'" + w_warn "To start ie8 (32-bit), from a terminal shell, use the command \"${WINE}\" '${W_PROGRAMS_X86_WIN}\\\\Internet Explorer\\\\iexplore.exe'\nTo start ie8 (64-bit), from a terminal shell, use the command \"${WINE64}\" '${W_PROGRAMS_WIN}\\\\Internet Explorer\\\\iexplore.exe'" fi - w_set_winver 'default' + w_restore_winver unset _W_restore_z } @@ -15891,7 +16624,7 @@ load_office2007pro() __EOF__ - "${WINE}" ${W_ISO_MOUNT_LETTER}:setup.exe /config "${W_TMP_WIN}"\\config.xml + "${WINE}" "${W_ISO_MOUNT_LETTER}":setup.exe /config "${W_TMP_WIN}"\\config.xml status=$? case ${status} in @@ -15907,7 +16640,7 @@ __EOF__ esac else - w_try "${WINE}" ${W_ISO_MOUNT_LETTER}:setup.exe + w_try "${WINE}" "${W_ISO_MOUNT_LETTER}":setup.exe fi } @@ -16091,104 +16824,73 @@ w_metadata origin apps \ year="2011" \ media="download" \ file1="OriginSetup.exe" \ + file2="version_v3.dll" \ installed_file1="${W_PROGRAMS_X86_WIN}/Origin/Origin.exe" \ homepage="https://www.origin.com/" -helper_origin_dl() -{ - # Skipping checksum as this changes too often - w_download_to origin https://origin-a.akamaihd.net/Origin-Client-Download/origin/live/OriginSetup.exe -} - load_origin() { - # Need to force wine-6.0 as Origin doesn't run below WineCX21 (wine32on64) - if [ "$(uname -s)" = "Darwin" ] && w_wine_version_in ,6.0 ; then - w_die "${W_PACKAGE} requires wine version 6.0 (or newer)" - fi + w_download_to origin https://taskinoz.com/downloads/OriginSetup-10.5.119.52718.exe ed6ee5174f697744ac7c5783ff9021da603bbac42ae9836cd468d432cadc9779 OriginSetup.exe + w_download_to origin https://github.com/p0358/Fuck_off_EA_App/releases/download/v3/version.dll 6c2df238a5cbff3475527aa7adf1d8b76d4d2d1a33a6d62edd4749408305c2be version_v3.dll - if [ "${WINETRICKS_FORCE}" != 1 ] && w_workaround_wine_bug 44691 "Installer fails under wine, manually unpacking it instead" 6.7,; then - w_call originupdater - w_warn "${W_PACKAGE} might fail, to update use the originupdate verb" - else - helper_origin_dl - w_try_cd "${W_CACHE}/${W_PACKAGE}" - w_try "${WINE}" "${file1}" /NoLaunch ${W_OPT_UNATTENDED:+/SILENT} - fi + w_try_mkdir "${W_DRIVE_C}/ProgramData/Origin" + + w_warn "Stopping Origin from finding updates" + cat > "${W_DRIVE_C}/ProgramData/Origin/local.xml" <<_EOF_ + + + + + + + +_EOF_ + + w_try_cd "${W_CACHE}/${W_PACKAGE}" + w_try "${WINE}" "${file1}" /NoLaunch ${W_OPT_UNATTENDED:+/SILENT} if w_workaround_wine_bug 32342 "QtWebEngineProcess.exe crashes when updating or launching Origin (missing fonts)"; then w_call corefonts fi - if w_workaround_wine_bug 44258 "Origin crashes on start."; then - w_override_app_dlls igoproxy.exe disabled d3d10 - w_override_app_dlls igoproxy.exe disabled d3d10_1 - w_override_app_dlls igoproxy.exe disabled d3d10core - w_override_app_dlls igoproxy.exe disabled d3d11 - w_override_app_dlls igoproxy.exe disabled d3d12 - w_override_app_dlls igoproxy.exe disabled dxgi - w_override_app_dlls igoproxy.exe disabled vulkan-1 - w_override_app_dlls igoproxy.exe disabled winevulkan - - if [ "${W_ARCH}" = "win64" ]; then - w_override_app_dlls igoproxy64.exe disabled d3d10 - w_override_app_dlls igoproxy64.exe disabled d3d10_1 - w_override_app_dlls igoproxy64.exe disabled d3d10core - w_override_app_dlls igoproxy64.exe disabled d3d11 - w_override_app_dlls igoproxy64.exe disabled d3d12 - w_override_app_dlls igoproxy64.exe disabled dxgi - w_override_app_dlls igoproxy64.exe disabled vulkan-1 - w_override_app_dlls igoproxy64.exe disabled winevulkan - fi + if w_workaround_wine_bug 36863 "Disabling Origin In-game overlay."; then + w_override_dlls disabled igoproxy.exe + w_override_dlls disabled igoproxy64.exe fi if w_workaround_wine_bug 44985 "Disabling libglesv2 to make Store and Library function correctly."; then - w_override_dlls disabled libglesv2 + w_override_app_dlls Origin.exe disabled libglesv2 fi # Avoids "An unexpected error has occurred. Please try again in a few moments. Error: 327684:3" # Games won't register correctly unless disabled if w_workaround_wine_bug 52781 "Origin does not notice games exiting, does not allow them to be relaunched."; then - w_override_app_dlls origin.exe disabled gameux + w_override_app_dlls Origin.exe disabled gameux fi - # Origin requirements - w_call vcrun2010 - w_call vcrun2013 - w_call vcrun2019 - - if w_wine_version_in ,6.3 ; then - w_call d3dcompiler_47 + if [ "$(uname -s)" = "Darwin" ]; then + w_override_app_dlls EALink.exe disabled d3d10 + w_override_app_dlls EALink.exe disabled d3d10core + w_override_app_dlls EALink.exe disabled d3d12 + w_override_app_dlls EALink.exe disabled d3d11 + w_override_app_dlls EALink.exe disabled dxgi + w_override_app_dlls Origin.exe disabled dxgi fi - w_warn "Origin In-game overlay must be disabled" -} - -#---------------------------------------------------------------- - -w_metadata originupdater apps \ - title="EA Origin (updater)" \ - publisher="EA" \ - media="download" \ - file1="../origin/OriginSetup.exe" \ - homepage="https://www.origin.com/" + w_warn "Workaround Forced EA app upgrade." + w_try cp -f "${W_CACHE}/${W_PACKAGE}/version_v3.dll" "${W_PROGRAMS_X86_UNIX}/Origin/version.dll" + w_override_app_dlls Origin.exe native version -load_originupdater() -{ - # Need to force wine-6.0 as Origin doesn't run below WineCX21 (wine32on64) - if [ "$(uname -s)" = "Darwin" ] && w_wine_version_in ,6.0 ; then - w_die "${W_PACKAGE} requires wine version 6.0 (or newer)" - fi + w_warn "Pretend EA app is installed" + cat > "${W_TMP}"/ea-app.reg <<_EOF_ +REGEDIT4 - # Remove cached installer as the checksum changes too often that is even more critical for the updater function - w_try rm -f "${W_CACHE}/origin/OriginSetup.exe" +[HKEY_LOCAL_MACHINE\\Software\\Electronic Arts\\EA Desktop] +"InstallSuccessful"="true" - helper_origin_dl +_EOF_ + w_try_regedit "${W_TMP}"/ea-app.reg - w_try rm -rf "${W_PROGRAMS_X86_UNIX}"/Origin - w_try_7z "${W_CACHE}"/origin "${W_CACHE}"/origin/OriginSetup.exe update - w_try_7z "${W_PROGRAMS_X86_UNIX}"/Origin "${W_CACHE}"/origin/update/OriginUpdate_*_*_*_*.zip -aoa - w_try rm -rf "${W_CACHE}"/origin/update } #---------------------------------------------------------------- @@ -16470,7 +17172,7 @@ w_metadata steam apps \ publisher="Valve" \ year="2010" \ media="download" \ - file1="SteamInstall.msi" \ + file1="SteamSetup.exe" \ installed_exe1="${W_PROGRAMS_X86_WIN}/Steam/Steam.exe" load_steam() @@ -16490,12 +17192,11 @@ load_steam() fi if w_workaround_wine_bug 44985 "Disabling libglesv2 to make Store and Library function correctly." 7.0,; then - w_override_dlls disabled libglesv2 - w_warn "Steam needs to be launched with -noreactlogin" + w_override_app_dlls steamwebhelper.exe disabled libglesv2 fi if [ "$(uname -s)" = "Darwin" ] && w_workaround_wine_bug 49839 "Steamwebhelper.exe crashes when running Steam."; then - w_warn "Steam must be launched with -allosarches -cef-force-32bit -cef-in-process-gpu -no-cef-sandbox" + w_warn "Steam must be launched with -allosarches -cef-force-32bit -cef-in-process-gpu -cef-disable-sandbox" fi # vulkandriverquery & vulkandriverquery64 crash a lot on macOS @@ -16634,7 +17335,7 @@ load_vc2005expresssp1() w_download https://web.archive.org/web/20110624054336/https://download.microsoft.com/download/7/7/3/7737290f-98e8-45bf-9075-85cc6ae34bf1/VS80sp1-KB926748-X86-INTL.exe a959d1ea52674b5338473be32a1370f9ec80df84629a2ed3471aa911b42d9e50 - w_try ${WINE} "${W_CACHE}"/vc2005expresssp1/VS80sp1-KB926748-X86-INTL.exe ${W_OPT_UNATTENDED:+/q} + w_try "${WINE}" "${W_CACHE}"/vc2005expresssp1/VS80sp1-KB926748-X86-INTL.exe ${W_OPT_UNATTENDED:+/q} } #---------------------------------------------------------------- @@ -16760,7 +17461,7 @@ load_vc2010express() w_try_7z "${W_TMP}" "${W_CACHE}"/vc2010express/VS2010Express1.iso w_try_cd "${W_TMP}"/VCExpress - w_try ${WINE} setup.exe ${W_OPT_UNATTENDED:+/q} + w_try "${WINE}" setup.exe ${W_OPT_UNATTENDED:+/q} } #---------------------------------------------------------------- @@ -16860,6 +17561,13 @@ load_winrar() _W_winrar_exe="winrar-x64-${_W_winrar_ver}.exe" fi case ${LANG} in + bg*) + if [ "${W_ARCH}" = "win32" ]; then + w_download "${_W_winrar_url}/${_W_winrar_exe}" 91fd68051f6adb05f8fc92621b7ddd42c8a0d32b0db7ee4c1a35262442ccd96c + else + w_download "${_W_winrar_url}/${_W_winrar_exe}" 08359eeb32aab2cc5421b73d7f5072a6d33bb613f8b5bce5675e70be01aee832 + fi + ;; da*) _W_winrar_exe="${_W_winrar_exe%.exe}dk.exe" if [ "${W_ARCH}" = "win32" ]; then @@ -16991,8 +17699,6 @@ load_wmp9() { w_skip_windows wmp9 && return - w_package_broken "https://bugs.winehq.org/show_bug.cgi?id=52772" 6.6 - # Not really expected to work well yet; see # https://appdb.winehq.org/appview.php?versionId=1449 @@ -17000,6 +17706,7 @@ load_wmp9() w_call wsh57 + w_store_winver w_set_winver winxp # See also https://support.microsoft.com/en-us/help/18612/windows-media-player @@ -17016,19 +17723,22 @@ load_wmp9() # Wine's pidgen is too stubby, crashes, see Wine bug 31111 w_override_app_dlls MPSetup.exe native pidgen - w_try_cd "${W_CACHE}"/"${W_PACKAGE}" + # The installer doesn't work in modern wine, in either 32 or 64-bit prefixes. + # https://bugs.winehq.org/show_bug.cgi?id=52772 + # Luckily, it's just a wrapper for the real installer, which does still work: + w_try_cd "${W_TMP}" + w_try_cabextract "${W_CACHE}/${W_PACKAGE}/MPSetup.exe" if [ "${W_ARCH}" = "win64" ]; then - w_try_cabextract -d "${W_TMP}" ./MPSetup.exe - w_try_cd "${W_TMP}" + # https://github.com/Winetricks/winetricks/issues/1087 w_try sed -i 's/IsWow64Process/IsNow64Process/' setup_wm.exe w_try "${WINE}" setup_wm.exe ${W_OPT_UNATTENDED:+/Quiet} w_warn "wm9codecs is not supported in win64 prefixes. If you need those codecs, reinstall wmp9 in a 32-bit prefix." else - w_try "${WINE}" MPSetup.exe ${W_OPT_UNATTENDED:+/q} + w_try "${WINE}" setup_wm.exe ${W_OPT_UNATTENDED:+/Quiet} load_wm9codecs fi - w_set_winver 'default' + w_restore_winver } #---------------------------------------------------------------- @@ -17054,6 +17764,7 @@ load_wmp10() # https://www.microsoft.com/en-us/download/details.aspx?id=20426 w_download https://web.archive.org/web/20200803205216/https://download.microsoft.com/download/1/2/a/12a31f29-2fa9-4f50-b95d-e45ef7013f87/MP10Setup.exe c1e71784c530035916aad5b09fa002abfbb7569b75208dd79351f29c6d197e03 + w_store_winver w_set_winver winxp # remove builtin placeholders to allow update @@ -17074,7 +17785,7 @@ load_wmp10() load_wm9codecs - w_set_winver 'default' + w_restore_winver } #---------------------------------------------------------------- @@ -17109,6 +17820,7 @@ load_wmp11() wmp_exe=wmp11-64.exe fi + w_store_winver w_set_winver winxp # remove builtin placeholders to allow update @@ -17132,7 +17844,7 @@ load_wmp11() w_try_regedit /D "HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\Cdr4_2K" w_try_regedit /D "HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\Cdralw2k" - w_set_winver 'default' + w_restore_winver } #---------------------------------------------------------------- @@ -17509,4377 +18221,131 @@ load_wglgears() chmod +x "${W_SYSTEM32_DLLS}/wglgears.exe" } -#---------------------------------------------------------------- -# Games +# Chinese apps addition #---------------------------------------------------------------- -w_metadata algodoo_demo games \ - title="Algodoo Demo" \ - publisher="Algoryx" \ - year="2009" \ +w_metadata 163mail apps\ + title="163 MailMaster(网易邮箱大师)" \ + publisher="NetEase" \ + year="2017" \ media="download" \ - file1="Algodoo_1_7_1-Win32.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Algodoo/Algodoo.exe" + file1="mail.exe" \ + installed_exe1="$W_PROGRAMS_X86_WIN/MailMaster/Start.exe" \ + homepage="http://mail.163.com/dashi/?from=mail46" \ + unattended="no" -load_algodoo_demo() +load_163mail() { - w_download http://www.algodoo.com/download/Algodoo_1_7_1-Win32.exe 99d3704ac35028fbc74fdf7c59df3f6caf636009bba19bcddf4f7e7797c14d71 +w_download http://client.dl.126.net/pcmail/dashi/mail.exe bf4f06945c3762cca1cd795da9be9893d9d57f7f8714e225ca2cf10ae9c33072 - w_try_cd "${W_CACHE}/${W_PACKAGE}" - w_ahk_do " - ; This one's funny... on Wine, keyboard works once you click manually, but until then, only ControlClick seems to work. - run, Algodoo_1_7_1-Win32.exe - SetTitleMatchMode, 2 - winwait, Algodoo, Welcome - if ( w_opt_unattended > 0 ) { - ControlClick, TNewButton1 - winwait, Algodoo, License - ;send {Tab}a{Space}{Enter} - ControlClick, TNewRadioButton1 ; Accept - ControlClick, TNewButton2 ; Next - winwait, Algodoo, Destination - ;send {Enter} - ControlClick, TNewButton3 ; Next - winwait, Algodoo, Folder - ;send {Enter} - ControlClick, TNewButton4 ; Next - winwait, Algodoo, Select Additional Tasks - ;send {Enter} - ControlClick, TNewButton4 ; Next - winwait, Algodoo, Ready to Install - ;send {Enter} - ControlClick, TNewButton4 ; Next - } - winwait, Algodoo, Completing - if ( w_opt_unattended > 0 ) { - sleep 500 - send {Space}{Tab}{Space}{Tab}{Space}{Enter} ; decline to run app or view tutorials - } - WinWaitClose, Algodoo, Completing - " + # uses vcrun2005 + w_call vcrun2005 + + w_try_cd "$W_CACHE/$W_PACKAGE" + w_try "$WINE" "$file1" + w_declare_exe "$W_PROGRAMS_X86_WIN\\MailMaster" "Start.exe" } #---------------------------------------------------------------- -w_metadata amnesia_tdd_demo games \ - title="Amnesia: The Dark Descent Demo" \ - publisher="Frictional Games" \ - year="2010" \ - media="manual_download" \ - file1="amnesia_tdd_demo_1.0.1.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Amnesia - The Dark Descent Demo/redist/Amnesia.exe" +w_metadata 163music apps\ + title="NetEase Cloud Music" \ + publisher="NetEase" \ + year="2023" \ + media="download" \ + file1="cloudmusicsetup2.9.9.199909.exe" \ + installed_exe1="$W_PROGRAMS_X86_WIN/Netease/CloudMusic/cloudmusic.exe" \ + homepage="http://music.163.com/" \ + unattended="no" -load_amnesia_tdd_demo() +load_163music() { - w_download_manual https://download.cnet.com/Amnesia-The-Dark-Descent-Demo/3000-2097_4-75312743.html amnesia_tdd_demo_1.0.1.exe ee4c07b40bfa59b506d2cee258c5c7a16028e11fc3a2bd243258c6bec8532dbc +w_download https://d1.music.126.net/dmusic/cloudmusicsetup2.9.9.199909.exe dfa07efeb984fe10dc2527461a4ea34121f3d8b42b5cda6ee61beabec12e9e2e + + if w_workaround_wine_bug 38028 "Installing native directx9 to work around playback bug"; then + w_call d3dx9 + fi - w_try_cd "${W_CACHE}/${W_PACKAGE}" + # Make sure chinese fonts are available + w_call fakechinese - w_ahk_do " - SetTitleMatchMode, 2 - Run, amnesia_tdd_demo_1.0.1.exe - if ( w_opt_unattended > 0 ) { - WinWait,Select Setup Language, language - ControlClick, TNewButton1 - WinWait, Amnesia - The Dark Descent Demo, Welcome - ControlClick, TNewButton1 - WinWait, Amnesia - The Dark Descent Demo, License - ControlClick, TNewRadioButton1 - ControlClick, TNewButton2 - WinWait, Amnesia - The Dark Descent Demo, installed? - ControlClick, TNewButton3 - WinWait, Folder Does Not Exist, created - ControlClick, Button1 - WinWait, Amnesia - The Dark Descent Demo, shortcuts - ControlClick, TNewButton4 - WinWait, Amnesia - The Dark Descent Demo, additional tasks - ControlClick, TNewButton4 - WinWait, Amnesia - The Dark Descent Demo, ready to begin installing - ControlClick, TNewButton4 - WinWait, Amnesia - The Dark Descent Demo, finished - ControlClick, TNewButton4 - WinWaitClose, Amnesia - The Dark Descent Demo, finished - } - " + w_try_cd "$W_CACHE/$W_PACKAGE" + w_try "$WINE" "$file1" + w_declare_exe "$W_PROGRAMS_X86_WIN\\Netease\CloudMusic" "cloudmusic.exe" } #---------------------------------------------------------------- -w_metadata aoe3_demo games \ - title="Age of Empires III Trial" \ - publisher="Microsoft" \ - year="2005" \ +w_metadata aliww apps\ + title="AliWangWang(阿里旺旺)" \ + publisher="Taobao.com" \ + year="2023" \ media="download" \ - file1="aoe3trial.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Microsoft Games/Age of Empires III Trial/age3.exe" + file1="AliIM_taobao_(10.01.03C).exe" \ + installed_exe1="$W_PROGRAMS_X86_WIN/AliWangWang/AliIM.exe" \ + homepage="https://wangwang.taobao.com/" \ + unattended="no" -load_aoe3_demo() +load_aliww() { +w_download "https://download.alicdn.com/wangwang/AliIM_taobao_(10.01.03C).exe" 207bdc210d7cdf2efa302f326f018d097d81e863f224f3c5846c175e2558fe9d - w_download https://http.download.nvidia.com/downloads/nZone/demos/aoe3trial.exe 4ef69289dfa0817ec14942d85ef597835a9d2b09e1506c60b9938b20daa274ad - - w_try_cd "${W_CACHE}/${W_PACKAGE}" + # Make sure chinese fonts are available + w_call fakechinese + + echo "Setting aliim handler to xdg-open." + ################################## + cat > $HOME/.local/share/applications/wine-extension-aliim.desktop <<_EOF_ +[Desktop Entry] +Type=Application +Name=AliWangWang +MimeType=x-scheme-handler/aliim; +NoDisplay=true +StartupNotify=true +Icon=A767_AliIM.0 +_EOF_ + echo Exec=env WINEPREFIX=$WINEPREFIX $WINE \"$W_PROGRAMS_X86_WIN\\AliWangWang\\10.01.03C\\wwcmd.exe\" %u >> $HOME/.local/share/applications/wine-extension-aliim.desktop + xdg-mime default wine-extension-aliim.desktop x-scheme-handler/aliim + ################################### - w_ahk_do " - SetTitleMatchMode, 2 - run aoe3trial.exe - WinWait,Empires,Welcome - if ( w_opt_unattended > 0 ) { - sleep 1000 - winactivate ; else next button click ignored on vista? - Sleep 500 - ControlClick Button1 ; Next - WinWait,Empires,Please - Sleep 500 - ControlClick Button4 ; Next - WinWait,Empires,Complete - Sleep 500 - ControlClick Button4 ; Finish - } - WinWaitClose - " + # Make sure chinese fonts are available + w_call fakechinese + + # Disable auto update + mkdir -p $WINEPREFIX/drive_c/Program\ Files/AliWangWang/10.01.03C/update + chmod 000 $WINEPREFIX/drive_c/Program\ Files/AliWangWang/10.01.03C/update - if w_workaround_wine_bug 24912 "Killing off lingering installer" ,4.19; then - # kill off lingering installer - w_ahk_do " - SetTitleMatchMode, 2 - WinKill,Empires - " - # or should we just do w_wineserver -k, like fable_tlc does? - # shellcheck disable=SC2046 - kill $(pgrep -f IDriver) - fi + w_try_cd "$W_CACHE/$W_PACKAGE" + w_try "$WINE" "$file1" + w_declare_exe "$W_PROGRAMS_X86_WIN\\AliWangWang" "AliIM.exe" } #---------------------------------------------------------------- -w_metadata acreedbro games \ - title="Assassin's Creed Brotherhood" \ - publisher="Ubisoft" \ - year="2011" \ - media="dvd" \ - file1="ACB.iso" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Ubisoft/Assassin's Creed Brotherhood/AssassinsCreedBrotherhood.exe" +w_metadata evernote apps \ + title="Evernote" \ + publisher="Evernote Corporation" \ + year="2017" \ + media="download" \ + file1="Evernote_6.5.4.5512.exe" \ + installed_exe1="$W_PROGRAMS_X86_WIN/Evernote/Evernote/Evernote.exe" \ + homepage="http://www.evernote.com" \ + unattended="no" -load_acreedbro() +load_evernote() { - w_mount ACB - w_read_key - w_ahk_do " - SetWinDelay 1000 - SetTitleMatchMode, 2 - run ${W_ISO_MOUNT_LETTER}:setup.exe - winwait, Brotherhood, Choose - if ( w_opt_unattended > 0 ) { - WinActivate - send {Enter} - ;ControlClick, Button3 ; Accept default (english) - winwait, Brotherhood, Welcome - WinActivate - send {Enter} ; Next - winwait, Brotherhood, License - WinActivate - send a ; Agree - sleep 500 - send {Enter} ; Next - winwait, Brotherhood, begin - send {Enter} ; Install - } - winwait, Brotherhood, Finish - if ( w_opt_unattended > 0 ) { - ControlClick Button4 - send {Enter} ; Finish - } - WinWaitClose - " - - w_download https://static3.cdn.ubi.com/ac_brotherhood/ac_brotherhood_1.01_ww.exe a8027b08840a7438a0bd1a1c17f962fcc386a2cb9fd1d3055de2486bf95778c2 - - # FIXME: figure out why these executables don't exit, and do a proper workaround or fix - sleep 10 - # shellcheck disable=SC2009 - if ps augxw | grep -i exe | grep -E 'winemenubuilder.exe|setup.exe|PnkBstrA.exe | grep -v grep'; then - w_warn "Killing processes so patcher does not complain about game still running" - w_wineserver -k - sleep 10 + w_download https://cdn1.evernote.com/win6/public/Evernote_6.6.4.5512.exe d909f785b407cbd57ed2b04ab8e95d6f993d54432a1303f6792f4e296da11b31 + + if w_workaround_wine_bug xxx "workaround can not edit bug"; then + w_call wininet fi - w_info "Applying patch ${W_CACHE}/${W_PACKAGE}/ac_brotherhood_1.01_ww.exe..." + # Make sure chinese fonts are available + w_call fakechinese - w_try_cd "${W_CACHE}/${W_PACKAGE}" - w_ahk_do " - SetWinDelay 1000 - SetTitleMatchMode, 2 - run ac_brotherhood_1.01_ww.exe - WinWait, Choose Setup Language, Select - if ( w_opt_unattended > 0 ) { - send {Enter} - winwait, Brotherhood 1.01, License - WinActivate - send a ; Agree - sleep 500 - send {Enter} ; Next - winwait, Brotherhood 1.01, Details - ControlClick Button1 ; Next - } - winwait, Brotherhood 1.01, Complete - if ( w_opt_unattended > 0 ) { - send {Enter} - } - WinWaitClose - " -} - -#---------------------------------------------------------------- - -w_metadata avatar_demo games \ - title="James Camerons Avatar: The Game Demo" \ - publisher="Ubisoft" \ - year="2009" \ - media="manual_download" \ - file1="Avatar_The_Game_Demo.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Ubisoft/Demo/James Cameron's AVATAR - THE GAME (Demo)/bin/AvatarDemo.exe" - -load_avatar_demo() -{ - w_download_manual https://www.fileplanet.com/207386/200000/fileinfo/Avatar:-The-Game-Demo Avatar_The_Game_Demo.exe aec9cf718f9584edc23044ff94996d4e7309654d50fcea91cba4282576a1e9c8 - - if w_workaround_wine_bug 23094 "Installing Visual C++ 2005 runtime to avoid installer crash"; then - w_call vcrun2005 - fi - - w_try_cd "${W_TMP}" - w_try_unrar "${W_CACHE}/${W_PACKAGE}/Avatar_The_Game_Demo.exe" - w_ahk_do " - SetTitleMatchMode, 2 - SetWinDelay 500 - run, setup.exe - winwait, Language - u = ${W_OPT_UNATTENDED} - if ( u > 0 ) { - WinActivate - controlclick, Button1 - winwait, AVATAR, Welcome - controlclick, Button1 - winwait, AVATAR, License - controlclick, Button5 - controlclick, Button2 - winwait, AVATAR, setup type - controlclick, Button2 - } - winwait AVATAR - if ( u > 0 ) { - ; Strange CRC error workaround. Will check this out. Stay tuned. - loop - { - ifwinexist, CRC Error - { - winactivate, CRC Error - controlclick, Button3, CRC Error ; ignore - } - ifwinexist, AVATAR, Complete - { - controlclick, Button4 - break - } - sleep 1000 - } - } - winwaitclose AVATAR - " -} - -#---------------------------------------------------------------- - -w_metadata bttf101 games \ - title="Back to the Future Episode 1" \ - publisher="Telltale" \ - year="2011" \ - media="manual_download" \ - file1="bttf_101_setup.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Telltale Games/Back to the Future The Game/Episode 1/BackToTheFuture101.exe" - -load_bttf101() -{ - w_download_manual "https://www.fileplanet.com/220151/220000/fileinfo/Back-to-the-Future:-The-Game---Episode-1-Client-%28Free-Game%29" bttf_101_setup.exe 8ad05063c5dae096697665ac36578f885937829ec7dac6a3a3644c76820e999c - - w_try_cd "${W_CACHE}/${W_PACKAGE}" - w_ahk_do " - SetWinDelay 1000 - SetTitleMatchMode, 2 - run, bttf_101_setup.exe - winwait, Back to the Future, Welcome - if ( w_opt_unattended > 0 ) { - ControlClick, Button2 ; Next - winwait, Back to the Future, Checking DirectX - ControlClick, Button5 ; Don't check - ControlClick, Button2 ; Next - winwait, Back to the Future, License - ControlClick, Button2 ; Agree - winwait, Back to the Future, Location - ControlClick, Button2 ; Install - } - winwait, Back to the Future, has been installed - if ( w_opt_unattended > 0 ) { - ControlClick Button4 ; Don't start now - ControlClick Button2 ; Finish - } - WinWaitClose - " -} - -#---------------------------------------------------------------- - -w_metadata bioshock_demo games \ - title="Bioshock Demo" \ - publisher="2K Games" \ - year="2007" \ - media="download" \ - file1="nzd_BioShockPC.zip" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/2K Games/BioShock Demo/Builds/Release/Bioshock.exe" - -load_bioshock_demo() -{ - w_download https://us.download.nvidia.com/downloads/nZone/demos/nzd_BioShockPC.zip 36f73251c0c1c6f4b6a83af9b6e44c642b4fce127c2c28cb6d2b25bc95baa934 - - w_info "Unzipping demo, installer will start in about 30 seconds." - w_try unzip "${W_CACHE}/${W_PACKAGE}/nzd_BioShockPC.zip" -d "${W_TMP}/${W_PACKAGE}" - w_try_cd "${W_TMP}/${W_PACKAGE}/BioShock PC Demo" - - w_ahk_do " - SetTitleMatchMode, 2 - run setup.exe - winwait, BioShock Demo - InstallShield Wizard, Choose Setup Language - if ( w_opt_unattended > 0 ) { - sleep 2000 - ControlClick, Button3 - ControlClick, Button3 - winwait, BioShock Demo - InstallShield Wizard, Welcome - sleep 1000 - ControlClick, Button1 - winwait, BioShock Demo - InstallShield Wizard, Please read - sleep 1000 - ControlClick, Button5 - sleep 1000 - ControlClick, Button2 - winwait, BioShock Demo - InstallShield Wizard, Select the setup type - sleep 1000 - ControlClick, Button2 - winwait, BioShock Demo - InstallShield Wizard, Click Install to begin - ControlClick, Button1 - } - winwait, BioShock Demo - InstallShield Wizard, The InstallShield Wizard has successfully installed BioShock - if ( w_opt_unattended > 0 ) { - sleep 1000 - ControlClick, Button2 ; don't launch - ControlClick, Button6 ; don't show readme - send {Enter} ; finish - } - winwaitclose - sleep 3000 ; wait for splash screen to close - " -} - -#---------------------------------------------------------------- - -w_metadata bioshock2 games \ - title="Bioshock 2" \ - publisher="2K Games" \ - year="2010" \ - media="dvd" \ - file1="BIOSHOCK_2.iso" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/2K Games/BioShock 2/SP/Builds/Binaries/Bioshock2Launcher.exe" \ - installed_exe2="${W_PROGRAMS_X86_WIN}/2K Games/BioShock 2/MP/Builds/Binaries/Bioshock2Launcher.exe" - -load_bioshock2() -{ - w_mount BIOSHOCK_2 - w_ahk_do " - SetWinDelay 1000 - SetTitleMatchMode, 2 - run ${W_ISO_MOUNT_LETTER}:setup.exe - if ( w_opt_unattended > 0 ) { - winwait BioShock 2, Language - controlclick Button3 - winwait BioShock 2, Welcome - controlclick Button1 ; Accept - winwait BioShock 2, License - controlclick Button3 ; Accept - sleep 500 - controlclick Button1 ; Next - winwait BioShock 2, Setup Type - controlclick Button4 ; Next - winwait BioShock 2, Ready to Install - controlclick Button1 ; Install - } - winwait BioShock 2, Complete - if ( w_opt_unattended > 0 ) { - controlclick Button4 ; Finish - } - " -} - -#---------------------------------------------------------------- - -w_metadata bfbc2 games \ - title="Battlefield Bad Company 2" \ - publisher="EA" \ - year="2010" \ - media="dvd" \ - file1="BFBC2.iso" - -load_bfbc2() -{ - # Title of installer Window gets the TM symbol wrong, even in UTF-8 locales. - # Is it like that in Windows, too? - w_mount BFBC2 - w_read_key - w_ahk_do " - SetTitleMatchMode, 2 - run ${W_ISO_MOUNT_LETTER}:setup.exe - winwait, Bad Company, English - sleep 500 - ControlClick, Next, Bad Company - winwait, Bad Company, Registration Code - sleep 500 - send {RAW}${W_KEY} - ControlClick, Next, Bad Company, Registration Code - winwait, Bad Company, Setup Wizard will install - sleep 500 - ControlClick, Button1, Bad Company, Setup Wizard - winwait, Bad Company, License Agreement - sleep 500 - ControlClick, Button1, Bad Company, License Agreement - ControlClick, Button3, Bad Company, License Agreement - winwait, Bad Company, End-User License Agreement - sleep 500 - ControlClick, Button1, Bad Company, License Agreement - ControlClick, Button3, Bad Company, License Agreement - winwait, Bad Company, Destination Folder - sleep 500 - ControlClick, Button1, Bad Company, Destination Folder - winwait, Bad Company, Ready to install - sleep 500 - ControlClick, Install, Bad Company, Ready to install - winwait, Authenticate Battlefield - sleep 500 - ControlClick, Disc authentication, Authenticate Battlefield - ControlClick, Button4, Authenticate Battlefield - winwait, Bad Company, PunkBuster - sleep 500 - ControlClick, Button4, Bad Company, PunkBuster - ControlClick, Finish, Bad Company - winwaitclose - " - - w_warn "Patching to latest version..." - - w_try_cd "${W_PROGRAMS_X86_UNIX}/Electronic Arts/Battlefield Bad Company 2" - w_ahk_do " - SetTitleMatchMode, 2 - run, BFBC2Updater.exe - winwait, Updater, have to update to - sleep 500 - ControlClick, Yes, Updater, have to update - winwait, Updater, successfully updated - sleep 500 - ControlClick,No, Updater, successfully updated ; Button2 - " - - if w_workaround_wine_bug 22961; then - # shellcheck disable=SC2016 - w_warn 'If the game says "No CD/DVD error", try "sudo mount -o remount,unhide,uid=$(uid -u)". See https://bugs.winehq.org/show_bug.cgi?id=22961 for more info.' - fi -} - -#---------------------------------------------------------------- - -w_metadata cnc3_demo games \ - title="Command & Conquer 3 Demo" \ - publisher="EA" \ - year="2007" \ - media="download" \ - file1="CnC3Demo.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Electronic Arts/Command & Conquer 3 Tiberium Wars Demo/CNC3Demo.exe" - -load_cnc3_demo() -{ - w_download "https://files.cncnz.com/cc3_tiberium_wars/demo/CnC3Demo.exe" 1e2499f441ef1fc3cbe447ac16361ad4247a02b9b8ec05f504161e7b5b1254e5 - - w_try_cd "${W_CACHE}/${W_PACKAGE}" - w_ahk_do " - SetTitleMatchMode, 2 - run, CnC3Demo.exe - winwait, Conquer 3, free space to install - if ( w_opt_unattended > 0 ) { - controlclick, button1 - winwait, WinZip, After installation - controlclick, button1 - winwait, Conquer 3, InstallShield - controlclick, button1 - winwait, Conquer 3, license - controlclick, button3 - controlclick, button5 - winwait, Conquer 3, setup type - controlclick, button5 - winwait, Conquer 3, EA Link - controlclick, button1 - winwait, Conquer 3, GameSpy - controlclick, button1 - } - winwait, Conquer 3, Launch the program - if ( w_opt_unattended > 0 ) - controlclick, button1 - - winwaitclose, Conquer 3, Launch the program - " -} - -#---------------------------------------------------------------- - -w_metadata cnc_redalert3_demo games \ - title="Command & Conquer Red Alert 3 Demo" \ - publisher="EA" \ - year="2008" \ - media="manual_download" \ - file1="RedAlert3Demo.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Electronic Arts/Red Alert 3 Demo/RA3Demo.exe" - -load_cnc_redalert3_demo() -{ - w_download_manual 'https://www.fileplanet.com/194888/190000/fileinfo/Command-&-Conquer:-Red-Alert-3-Demo' RedAlert3Demo.exe 9c2fb15076830f0e11d89be1847f4777262d8e6ee3d51ae765535f812a8a8cb2 - - w_try_cd "${W_CACHE}/${W_PACKAGE}" - if test ! "${W_OPT_UNATTENDED}"; then - w_try "${WINE}" "${file1}" - else - w_ahk_do " - SetWinDelay 1000 - SetTitleMatchMode, 2 - run ${file1} - winwait, Demo, readme - send {enter} ; Install button - winwait, Demo, Agreement - ControlFocus, TNewCheckListBox1, accept - send {space} ; accept license - sleep 1000 - send N ; Next - winwait, Demo, Agreement ; DirectX - ControlFocus, TNewCheckListBox1, accept - send {space} ; accept license - sleep 1000 - send N ; Next - winwait, Demo, Next - send N ; Next - winwait, Demo, Install - send {enter} ; Really install - winwait, Demo, Finish - send F ; finish - WinWaitClose - " - fi -} - -#---------------------------------------------------------------- - -# https://appdb.winehq.org/objectManager.php?sClass=version&iId=9320 - -w_metadata blobby_volley games \ - title="Blobby Volley" \ - publisher="Daniel Skoraszewsky" \ - year="2000" \ - media="manual_download" \ - file1="blobby.zip" \ - installed_exe1="c:/BlobbyVolley/volley.exe" - -load_blobby_volley() -{ - w_download_manual https://www.chip.de/downloads/Blobby-Volley_12990993.html blobby.zip ef7d2e61fabe5ac6a556fa7c254edc667df5a6659ea262ee2bc97ed61abc3f64 - w_try_unzip "${W_DRIVE_C}/BlobbyVolley" "${W_CACHE}/${W_PACKAGE}"/blobby.zip -} - -#---------------------------------------------------------------- - -w_metadata cim_demo games \ - title="Cities In Motion Demo" \ - publisher="Paradox Interactive" \ - year="2010" \ - media="manual_download" \ - file1="cim-demo-1-0-8.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Cities In Motion Demo/Cities In Motion.exe" - -load_cim_demo() -{ - # 29 Mar 2011 cf02066f496637c24f95cf0c4ddfae376951330802500fb11bd74cc6c8872995, Inno Setup installer - #w_download https://www.pcgamestore.com/games/cities-in-motion-nbsp/trial/cim-demo-1-0-8.exe cf02066f496637c24f95cf0c4ddfae376951330802500fb11bd74cc6c8872995 - w_download_manual https://www.fileplanet.com/218762/210000/fileinfo/Cities-in-Motion-Demo cim-demo-1-0-8.exe cf02066f496637c24f95cf0c4ddfae376951330802500fb11bd74cc6c8872995 - w_try_cd "${W_CACHE}/${W_PACKAGE}" - w_try "${WINE}" cim-demo-1-0-8.exe ${W_OPT_UNATTENDED:+ /sp- /silent /norestart} -} - -#---------------------------------------------------------------- - -w_metadata cod_demo games \ - title="Call of Duty demo" \ - publisher="Activision" \ - year="2003" \ - media="manual_download" \ - file1="call_of_duty_demo.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Call of Duty Single Player Demo/CoDSP.exe" - -load_cod_demo() -{ - w_download_manual https://www.gamefront.com/files/968870/call_of_duty_demo_exe Call_Of_Duty_Demo.exe a7773f1ddb0c9928f738a2be34614d52bc07ecc42c0fe704ab5a596da5421b08 - - w_try_cd "${W_CACHE}/${W_PACKAGE}" - w_ahk_do " - SetTitleMatchMode, 2 - run Call_Of_Duty_Demo.exe - WinWait,Call of Duty Single Player Demo,Welcome - if ( w_opt_unattended > 0 ) { - sleep 1000 - ControlClick Button1 ; next - WinWait,Call of Duty Single Player Demo,License - sleep 1000 - WinActivate - send A ; I Agree - WinWait,Call of Duty Single Player Demo,System - sleep 1000 - send n ; Next - WinWait,Call of Duty Single Player Demo,Location - sleep 1000 - send {Enter} - WinWait,Call of Duty Single Player Demo,Select - sleep 1000 - send n - WinWait,Call of Duty Single Player Demo,Start - sleep 1000 - send i ; Install - WinWait,Create Shortcut - sleep 1000 - send n ; No - } - WinWait,Call of Duty Single Player Demo, Complete - if ( w_opt_unattended > 0 ) { - sleep 1000 - send {Enter} ; Finish - } - WinWaitClose - " - - if w_workaround_wine_bug 21558; then - # Work around a buffer overflow - not really Wine's fault - w_warn "If you get a buffer overflow error, set __GL_ExtensionStringVersion=17700 before starting Wine. See https://bugs.winehq.org/show_bug.cgi?id=21558." - fi -} - -#---------------------------------------------------------------- - -w_metadata cod1 games \ - title="Call of Duty" \ - publisher="Activision" \ - year="2003" \ - media="dvd" \ - file1="CoD1.iso" \ - file2="CoD2.iso" - -load_cod1() -{ - # FIXME: port load_harder from winetricks and use it when caching first disc - w_mount CoD1 - - w_read_key - - __GL_ExtensionStringVersion=17700 w_ahk_do " - SetTitleMatchMode, 2 - run ${W_ISO_MOUNT_LETTER}:setup.exe - WinWait, w_try_cd Key, enter - if ( w_opt_unattended > 0 ) { - send {Raw}${W_KEY} - ControlClick Button1 - WinWait, w_try_cd Key, valid - ControlClick Button1 - WinWait, Call of Duty, Welcome - ControlClick Button1 - WinWait, Call of Duty, License - ControlClick Button3 - WinWait, Call of Duty, Minimum - ControlClick Button4 - WinWait, Call of Duty, Location - ControlClick Button1 - WinWait, Call of Duty, Folder - ControlClick Button1 - WinWait, Call of Duty, Start - ControlClick Button1 - } - WinWait, Insert CD, Please insert the Call of Duty cd 2 - " - - "${WINE}" eject ${W_ISO_MOUNT_LETTER}: - w_mount CoD2 - - w_ahk_do " - SetTitleMatchMode, 2 - if ( w_opt_unattended > 0 ) { - Send {Enter} ;continue installation - } - WinWait, Insert CD, Please insert the Call of Duty cd 1 - " - - "${WINE}" eject ${W_ISO_MOUNT_LETTER}: - w_mount CoD1 - - w_ahk_do " - SetTitleMatchMode, 2 - if ( w_opt_unattended > 0 ) { - Send {Enter} ;finalize install - WinWait, Create Shortcut, Desktop - ControlClick Button1 - WinWait, DirectX, Call ;directx 9 - ControlClick Button6 - ControlClick Button1 - WinWait, Confirm DX settings, Are - ControlClick Button2 - } - ; handle crash here - WinWait, Installation Complete, Congratulations! - if ( w_opt_unattended > 0 ) { - ControlClick Button1 - } - WinWaitClose - " - "${WINE}" eject ${W_ISO_MOUNT_LETTER}: - - if w_workaround_wine_bug 21558; then - # Work around a buffer overflow - not really Wine's fault - w_warn "If you get a buffer overflow error, set __GL_ExtensionStringVersion=17700 before starting Wine. See https://bugs.winehq.org/show_bug.cgi?id=21558" - fi - w_warn "This game is copy-protected, and requires the real disc in a real drive to run." -} - -#---------------------------------------------------------------- - -w_metadata cod4mw_demo games \ - title="Call of Duty 4: Modern Warfare" \ - publisher="Activision" \ - year="2007" \ - media="manual_download" \ - file1="CoD4MWDemoSetup_v2.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Activision/Call of Duty 4 - Modern Warfare Demo/iw3sp.exe" - -load_cod4mw_demo() -{ - # 2017/03/28: Also at https://www.fileplanet.com/213663/210000/fileinfo/LEGO-Harry-Potter:-Years-1-4-Demo - w_download_manual https://download.cnet.com/Call-of-Duty-4-Modern-Warfare/3000-7441_4-11277584.html CoD4MWDemoSetup_v2.exe 715710678394e9b0edda5dd3a560c9711557297aa2849c83e5c109db9830fbbb - - w_try_cd "${W_CACHE}/${W_PACKAGE}" - w_ahk_do " - SetTitleMatchMode, 2 - run, CoD4MWDemoSetup_v2.exe - WinWait,Modern Warfare,Welcome - if ( w_opt_unattended > 0 ) { - Sleep 500 - ControlClick Button1 ; Next - WinWait,Modern Warfare, License - Sleep 500 - ControlClick Button5 ; accept - Sleep 2000 - ControlClick Button2 ; Next - WinWait,Modern Warfare, System Requirements - Sleep 500 - ControlClick Button1 ; Next - Sleep 500 - ControlClick Button4 ; Next - WinWait,Modern Warfare, Typical - Sleep 500 - ControlClick Button4 ; License - Sleep 500 - ControlClick Button1 ; Next - WinWait,Question, shortcut - Sleep 500 - ControlClick Button1 ; Yes - WinWait,Microsoft DirectX Setup, license - Sleep 500 - ControlClick Button1 ; Yes - WinWait,Modern Warfare, finished - Sleep 500 - ControlClick Button1 ; Finished - } - WinWaitClose,WinZip Self-Extractor - CoD4MWDemoSetup_v2 - " -} - -#---------------------------------------------------------------- - -w_metadata cod5_waw games \ - title="Call of Duty 5: World at War" \ - publisher="Activision" \ - year="2008" \ - media="dvd" \ - file1="5330161c7960f0770e6b05f498ab9fd13be4cfad.iso" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Activision/Call of Duty - World at War/CoDWaW.exe" - -load_cod5_waw() -{ - w_mount CODWAW - - w_read_key - - w_ahk_do " - SetTitleMatchMode, 2 - run, ${W_ISO_MOUNT_LETTER}:setup.exe - winwait, Call of Duty, Key Code - sleep 1000 - Send ${W_KEY} - sleep 1000 - ControlClick, Button1, Call of Duty, Key Code - winwait, Key Code Check - sleep 1000 - controlclick, Button1, Key Code Check - winwait, Call of Duty, License Agreement - sleep 1000 - controlclick, Button5, Call of Duty, License Agreement - sleep 1000 - controlclick, Button2, Call of Duty, License Agreement - ; It wants to install PunkBuster here...OH BOY! Luckily, we can say no (see below) - winwait, PunkBuster, Anti-Cheat software system - sleep 1000 - controlclick, Button1, PunkBuster, Anti-Cheat software system - winwait, Call of Duty, install PunkBuster - sleep 1000 - ; Punkbuster: both are scripted below, so you can toggle which one you want. - ; No: - ; controlclick, Button2, Call of Duty, install PunkBuster - ; Yes: - controlclick, Button1, Call of Duty, install PunkBuster - winwait, PunkBuster, License - sleep 1000 - controlclick, Button5, PunkBuster, License - sleep 1000 - controlclick, Button2, PunkBuster, License - ; /end punkbuster - winwait, Call of Duty, Minimum System - sleep 1000 - controlclick, Button1, Call of Duty, Minimum System - winwait, Call of Duty, Setup Type - sleep 1000 - controlclick, Button1, Call of Duty, Setup Type - ; Exits silently after install - ; Need to wait here else next verb will run before this one is done - winwaitclose, Call of Duty - " - - # FIXME: Install latest updates - w_warn "This game is copy-protected, and requires the real disc in a real drive to run." -} - -#---------------------------------------------------------------- - -w_metadata civ4_demo games \ - title="Civilization IV Demo" \ - publisher="Firaxis Games" \ - year="2005" \ - media="manual_download" \ - file1="Civilization4_Demo.zip" \ - installed_file1="${W_PROGRAMS_X86_WIN}/Firaxis Games/Sid Meier's Civilization 4 Demo/Civilization4.exe" - -load_civ4_demo() -{ - w_download_manual https://download.cnet.com/Civilization-IV-demo/3000-7489_4-10465206.html Civilization4_Demo.zip aaafc7fcbf0fc16c9b28c2422400721a40818b867e9291268877c5d3841122a2 - - w_try_unzip "${W_TMP}" "${W_CACHE}/${W_PACKAGE}"/Civilization4_Demo.zip - w_try_cd "${W_TMP}/${W_PACKAGE}" - chmod +x setup.exe - w_ahk_do " - SetTitleMatchMode, 2 - run, setup.exe - winwait, Choose Setup Language - if ( w_opt_unattended > 0 ) { - sleep 1000 - Send {enter} - winwait, Civilization 4, Welcome - ControlClick &Next >, Civilization 4 - winwait, Civilization 4, I &accept the terms of the license agreement - ControlClick I &accept, Civilization 4 - ControlClick &Next >, Civilization 4 - winwait, Civilization 4, Express Install - ControlClick &Next >, Civilization 4 - winwait, Civilization 4, begin installation - ControlClick &Install, Civilization 4 - winwait, Civilization 4, InstallShield Wizard Complete - ControlClick Finish, Civilization 4 - } - winwaitclose - " -} - -#---------------------------------------------------------------- - -w_metadata crayonphysics_demo games \ - title="Crayon Physics Deluxe demo" \ - publisher="Kloonigames" \ - year="2011" \ - media="download" \ - file1="crayon_release52demo.exe" \ - installed_exe1="${W_PROGRAMS_WIN}/Crayon Physics Deluxe Demo/crayon.exe" \ - homepage="http://crayonphysics.com" - -load_crayonphysics_demo() -{ - w_download https://crayonphysicsdeluxe.s3.amazonaws.com/crayon_release52demo.exe 3c221f4c4283d89c180337071b5d3f8b88b68cea0558e6f72abcb34ef954b923 - # Inno Setup installer - w_try "${WINE}" "${W_CACHE}/${W_PACKAGE}/${file1}" ${W_OPT_UNATTENDED:+ /sp- /silent /norestart} -} - -#---------------------------------------------------------------- - -w_metadata crysis2 games \ - title="Crysis 2" \ - publisher="EA" \ - year="2011" \ - media="dvd" \ - file1="Crysis2.exe" \ - installed_file1="${W_PROGRAMS_X86_WIN}/Electronic Arts/Crytek/Crysis 2/bin32/Crysis2.exe" - -load_crysis2() -{ - w_mount "Crysis 2" - w_ahk_do " - SetTitleMatchMode, 2 - SetWinDelay, 1000 - run ${W_ISO_MOUNT_LETTER}:EASetup.exe - if ( w_opt_unattended > 0 ) { - Loop { - ; On Windows, this window does not pop up - ifWinExist, Microsoft Visual C++ 2008 Redistributable Setup - { - winwait, Microsoft Visual C++ 2008 Redistributable Setup - controlclick, Button12 ; Next - winwait, Visual C++, License - controlclick, Button11 ; Agree - controlclick, Button8 ; Install - winwait, Setup, configuring - winwaitclose - winwait, Visual C++, Complete - controlclick, Button2 ; Finish - break - } - ifWinExist, Setup, Please read the End User - { - break - } - sleep 1000 - } - winwait, Setup, Please read the End User - controlclick, Button1 ; accept - sleep 500 - ;controlclick, Button3 ; next - send {Enter} - ; Again for DirectX - winwait, Setup, Please read the following End - ;controlclick, Button1 ; accept - send a - sleep 1000 - ;controlclick, Button3 ; next - send {Enter} - winwait,Setup, Ready to install - controlclick, Button1 - } - winwait, Setup, Click the Finish button - if ( w_opt_unattended > 0 ) { - controlclick, Button5 ; Don't install EA Download Manager - controlclick, Button1 ; Finish - } - winwaitclose - " -} - -#---------------------------------------------------------------- - -w_metadata csi6_demo games \ - title="CSI: Fatal Conspiracy Demo" \ - publisher="Ubisoft" \ - year="2010" \ - media="manual_download" \ - file1="CSI6_PC_Demo_05.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Ubisoft/Telltale Games/CSI - Fatal Conspiracy Demo/CSI6Demo.exe" - -load_csi6_demo() -{ - w_download_manual https://www.fileplanet.com/217175/download/CSI:-Fatal-Conspiracy-Demo CSI6_PC_Demo_05.exe dd80e8e2ad2716a49ae292da99c4d069e2193d64ee62ca2941ce93fd7ee3b015 - - w_try_cd "${W_CACHE}/${W_PACKAGE}" - w_ahk_do " - SetWinDelay 1000 - SetTitleMatchMode, 2 - run, CSI6_PC_Demo_05.exe - winwait, Installer Language, Please select - if ( w_opt_unattended > 0 ) { - ControlClick, Button1 ; Accept default (english) - ;send {Enter} ; Accept default (english) - winwait, CSI - Fatal Conspiracy Demo Setup - send {Enter} ; Next - winwait, CSI - Fatal Conspiracy Demo Setup, License - send {Enter} ; Agree - winwait, CSI - Fatal Conspiracy Demo Setup, Location - send {Enter} ; Install - } - winwait, CSI - Fatal Conspiracy Demo Setup, Finish - if ( w_opt_unattended > 0 ) { - ControlClick Button4 - send {Enter} ; Finish - WinWaitClose - } - " -} - -#---------------------------------------------------------------- - -w_metadata darknesswithin2_demo games \ - title="Darkness Within 2 Demo" \ - publisher="Zoetrope Interactive" \ - year="2010" \ - media="manual_download" \ - file1="DarknessWithin2Demo.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Iceberg Interactive/Darkness Within 2 Demo/DarkLineage.exe" - -load_darknesswithin2_demo() -{ - w_download_manual http://www.bigdownload.com/games/darkness-within-2-the-dark-lineage/pc/darkness-within-2-the-dark-lineage-demo DarknessWithin2Demo.exe - - w_try_cd "${W_CACHE}/${W_PACKAGE}" - w_ahk_do " - SetTitleMatchMode, 2 - run, DarknessWithin2Demo.exe - winwait, Darkness Within, will install - if ( w_opt_unattended > 0 ) { - ControlClick, TNewButton1 - winwait, Darkness, License - ControlClick, TNewRadioButton1 - ControlClick, TNewButton2 - winwait, Darkness, Location - ControlClick, TNewButton3 - winwait, Darkness, shortcuts - ControlClick, TNewButton4 - winwait, Darkness, additional - ControlClick, TNewButton4 - winwait, Darkness, Ready to Install - ControlClick, TNewButton4 - winwait, PhysX, License - ControlClick, Button3 - ControlClick, Button4 - winwait, PhysX, successfully - ControlClick, Button1 - } - winwait, Darkness, Setup has finished - if ( w_opt_unattended > 0 ) { - ControlClick, TNewListBoxButton1 - ControlClick, TNewButton4 - } - winwaitclose, Darkness, Setup has finished - " -} - -#---------------------------------------------------------------- - -w_metadata darkspore games \ - title="Darkspore" \ - publisher="EA" \ - year="2011" \ - media="dvd" \ - file1="DARKSPORE.iso" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Electronic Arts/Darkspore/DarksporeBin/Darkspore.exe" \ - homepage="http://darkspore.com/" - -load_darkspore() -{ - # Mount disc, verify that expected file is present - w_mount DARKSPORE Darkspore.ico - w_ahk_do " - SetWinDelay 1000 - SetTitleMatchMode, 2 - run ${W_ISO_MOUNT_LETTER}:setup.exe - if ( w_opt_unattended > 0 ) { - winwait, Choose Setup Language - controlclick, Button1 ; ok (accept default, English) - winwait, InstallShield Wizard, Welcome - controlclick, Button1 ; Next - winwait, InstallShield Wizard, License Agreement - controlclick, Button3 ; Accept - sleep 1000 - controlclick, Button1 ; Next - winwait, InstallShield Wizard, Select Features - controlclick, Button5 ; Next - winwait, InstallShield Wizard, Ready to Install the Program - controlclick, Button1 ; Install - winwait, DirectX - controlclick, Button1 ; Accept - sleep 1000 - controlclick, Button4 ; Next - winwait, DirectX, DirectX setup - controlclick, Button4 - winwait, DirectX, components installed - controlclick, Button5 ; Finish - } - winwait, InstallShield Wizard, You are now ready - if ( w_opt_unattended > 0 ) { - controlclick, Button1 ; Uncheck View Readme.txt - controlclick, Button4 ; Finish - } - WinWaitClose, InstallShield Wizard - " -} - -#---------------------------------------------------------------- - -w_metadata dcuo games \ - title="DC Universe Online" \ - publisher="EA" \ - year="2011" \ - media="dvd" \ - file1="DCUO - Disc 1.iso" \ - file2="DCUO - Disc 2.iso" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Sony Online Entertainment/Installed Games/DC Universe Online Live/LaunchPad.exe" - -load_dcuo() -{ - w_mount "DCUO - Disc 1" - w_ahk_do " - SetWinDelay 1000 - SetTitleMatchMode, 2 - run, ${W_ISO_MOUNT_LETTER}:setup.exe - if ( w_opt_unattended > 0 ) { - winwait, DC Universe, Anti-virus - ControlClick, Button1 ; next - winwait, DC Universe, License - ControlClick, Button5 ; accept - sleep 500 - ControlClick, Button2 ; next - winwait, DC Universe, Shortcut - ControlClick, Button3 ; next - Loop - { - IfWinExist, DC Universe, not enough space - { - exit 1 ; dang, have to quit - } - IfWinExist, DC Universe, Ready - { - break - } - Sleep 1000 - } - winwait, DC Universe, Ready - ControlClick, Button1 ; next - } - winwait, Setup Needs The Next Disk, Please insert disk 2 - " - - w_mount "DCUO - Disc 2" - w_ahk_do " - SetWinDelay 1000 - SetTitleMatchMode, 2 - winwait, Setup Needs The Next Disk, Please insert disk 2 - if ( w_opt_unattended > 0 ) { - ControlClick, Button2 ; next - winwaitclose - Loop - { - IfWinExist, DirectX, Welcome - { - ControlClick, Button1 ; accept - Sleep 1000 - ControlClick, Button4 ; next - WinWait, DirectX, Runtime Install - ControlClick, Button4 ; next - WinWait, DirectX, Complete - ControlClick, Button4 ; next - sleep 1000 - process, close, dxsetup.exe ; work around strange 'next button does nothing' bug - } - IfWinExist, Flash ; a newer version of flash is already installed - { - ControlClick, Button3 ; quit - } - IfWinExist, DC Universe, Complete - { - break - } - Sleep 1000 - } - } - WinWait, DC Universe, Complete - if ( w_opt_unattended > 0 ) { - ControlClick, Button4 ; finish - } - winwaitclose - " - w_warn "Now let the wookie install itself, and then quit." -} - -#---------------------------------------------------------------- - -w_metadata deadspace games \ - title="Dead Space" \ - publisher="EA" \ - year="2008" \ - media="dvd" \ - file1="DEADSPACE.iso" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Electronic Arts/Dead Space/Dead Space.exe" - -load_deadspace() -{ - w_mount DEADSPACE - - if w_workaround_wine_bug 23324; then - msvcrun_me_harder=" - winwait, Microsoft - controlclick, Button1 - " - else - msvcrun_me_harder="" - fi - - w_read_key - - w_ahk_do " - SetTitleMatchMode, 2 - ; note: if this is the second run, the installer skips the registration code prompt - run, ${W_ISO_MOUNT_LETTER}:EASetup.exe - winwait, Dead - send {Enter} - winwait, Dead, Registration Code - send {RAW}${W_KEY} - Sleep 1000 - controlclick, Button2 - ${msvcrun_me_harder} - winwait, Setup, License - Sleep 1000 - controlclick, Button1 - Sleep 1000 - send {Enter} - winwait, Setup, License - Sleep 1000 - controlclick, Button1 - Sleep 1000 - send {Enter} - winwait, Setup, Destination - Sleep 1000 - controlclick, Button1 - winwait, Setup, begin - Sleep 1000 - controlclick, Button1 - winwait, Setup, Finish - Sleep 1000 - controlclick, Button5 - controlclick, Button1 - " -} - -#---------------------------------------------------------------- - -w_metadata deadspace2 games \ - title="Dead Space 2" \ - publisher="EA" \ - year="2011" \ - media="dvd" \ - file1="Disc1.iso" \ - file2="Disc2.iso" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/EA Games/Dead Space 2/deadspace2.exe" \ - -load_deadspace2() -{ - w_read_key - - w_mount Disc1 - - # FIXME: this bug was fixed in 1.3.36, so this is unnecessary - # - # Work around bug 25963 (fails to switch discs) - w_warn "Copying discs to hard drive. This will take a few minutes." - w_try_cd "${W_TMP}" - # Copy takes a LONG time, so offer a way to avoid copy while debugging verb - # You'll need to comment out the five "rm -rf"'s, too. - if test ! -f easetup.exe; then - w_try cp -R "${W_ISO_MOUNT_ROOT}"/* . - # Make the directories writable, else 2nd disc copy will fail. - w_try chmod -R +w . - w_mount Disc2 - # On Linux, use symlinks for disc 2. (On Cygwin, we'd have to copy.) - w_try ln -s "${W_ISO_MOUNT_ROOT}"/*.dat . - mkdir -p movies/en movies/fr - w_try ln -s "${W_ISO_MOUNT_ROOT}"/movies/en/* movies/en/ - w_try ln -s "${W_ISO_MOUNT_ROOT}"/movies/fr/* movies/fr/ - # Make the files writable, otherwise you'll get errors when trying to remove the temp directory. - chmod -R +w . - fi - - # Install takes a long time, so offer a way to skip installation - # and go straight to activation while debugging that - if ! test -f "${W_PROGRAMS_X86_UNIX}/EA Games/Dead Space 2/deadspace2.exe"; then - w_ahk_do " - run easetup.exe - if ( w_opt_unattended > 0 ) { - SetTitleMatchMode, 2 - ; Not all systems need the Visual C++ runtime - loop - { - ifwinexist, Microsoft Visual C++ 2008 Redistributable Setup - { - sleep 500 - controlclick, Button12 ; Next - winwait, Visual C++, License - sleep 500 - controlclick, Button11 ; Agree - sleep 500 - controlclick, Button8 ; Install - winwait, Setup, configuring - winwaitclose - winwait, Visual C++, Complete - sleep 500 - controlclick, Button2 ; Finish - break - } - ifwinexist, Setup, Dead Space - { - break - } - sleep 1000 - } - winwait, Setup, License ; Dead Space license - sleep 500 - controlclick Button1 ; accept - controlclick Button3 ; next - SetTitleMatchMode, slow ; since word DirectX in next dialog can only be read 'slowly' - winwait, Setup, DirectX ; DirectX license - sleep 500 - controlclick Button1 ; accept - controlclick Button3 ; next - winwait, Setup, Ready to install - sleep 500 - controlclick Button1 ; Install - } - winwait, Setup, Completed - if ( w_opt_unattended > 0 ) { - controlclick Button5 ; (Don't) install EA Download Manager - controlclick Button1 ; Finish - } - winwaitclose - " - fi - - # Activate the game - w_try_cd "${W_PROGRAMS_X86}/EA Games/Dead Space 2" - w_ahk_do " - run activation.exe - if ( w_opt_unattended > 0 ) { - SetTitleMatchMode, 2 - WinWait, Product activation - sleep 500 - controlclick TBitBtn2 ; Next - WinWait, Product activation, Serial - sleep 500 - send ${W_KEY} - controlclick TBitBtn3 ; Next - WinWait, Information - sleep 4000 ; let user see what happened - send {Enter} - } - WinWaitClose, Product activation - " -} - -#---------------------------------------------------------------- - -w_metadata deusex2_demo games \ - title="Deus Ex 2 / Deus Ex: Invisible War Demo" \ - publisher="Eidos" \ - year="2003" \ - media="manual_download" \ - file1="dxiw_demo.zip" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Deus Ex - Invisible War Demo/System/DX2.exe" - -load_deusex2_demo() -{ - w_download_manual https://www.fileplanet.com/133479/130000/fileinfo/Deus-Ex:-INVISIBLE-WAR-Demo dxiw_demo.zip cd3804a03301afd582c9c9374a670944b8cc1470ad1c2e5f3cd602c60d70244f - - w_try unzip "${W_CACHE}/${W_PACKAGE}/dxiw_demo.zip" -d "${W_TMP}" - w_try_cd "${W_TMP}" - w_ahk_do " - SetTitleMatchMode 2 - SetWinDelay 500 - run setup.exe - winwait Deus Ex, Launch - if ( w_opt_unattended > 0 ) { - controlclick button2 - winwait Deus Ex, Welcome - controlclick button1 - winwait Deus Ex, License - controlclick button3 ;accept - controlclick button1 ;next - winwait Deus Ex, Setup Type - controlclick button4 - winwait Deus Ex, Install - controlclick button1 - winwait Question, Readme - controlclick button2 - winwait Question, play - controlclick button2 - } - winwait Deus Ex, Complete - if ( w_opt_unattended > 0 ) - controlclick button4 - winwaitclose Deus Ex, Complete - " -} - -#---------------------------------------------------------------- - -w_metadata diablo2 games \ - title="Diablo II" \ - publisher="Blizzard" \ - year="2000" \ - media="cd" \ - file1="INSTALL.iso" \ - file2="PLAYDISC.iso" \ - file3="CINEMATICS.iso" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Diablo II/Diablo II.exe" - -load_diablo2() -{ - w_download http://ftp.blizzard.com/pub/diablo2/patches/PC/D2Patch_113c.exe 3d7a488c2a76a12e5a21fc71ca313cf9440f67ded6f65dc6bc49e30f6f557672 - - w_read_key - - w_mount INSTALL - w_ahk_do " - SetWinDelay 500 - run ${W_ISO_MOUNT_LETTER}:setup.exe - winwait, Diablo II Setup - send {i} - winwait, Choose Installation Size - send {u} - send {Enter} - send {Raw}${LOGNAME} - send {Tab}{Raw}${W_KEY} - send {Enter} - winwait, Diablo II - choose install directory - send {Enter} - winwait, Desktop Shortcut - send {N} - winwait, Insert Disc" - w_mount PLAYDISC - # Needed by patch 1.13c to avoid disc swapping - cp "${W_ISO_MOUNT_ROOT}"/d2music.mpq "${W_PROGRAMS_UNIX}/Diablo II/" - w_ahk_do " - send, {Enter} - Sleep 1000 - winwait, Insert Disc" - w_mount CINEMATICS - w_ahk_do " - send, {Enter} - Sleep 1000 - winwait, Insert Disc" - w_mount INSTALL - w_ahk_do " - send, {Enter} - Sleep 1000 - winwait, View ReadMe? - ControlClick &No, View ReadMe? - winwait, Register Diablo II Electronically? - send {N} - winwait, Diablo II Setup - Video Test - ControlClick &Cancel, Diablo II Setup - Video Test - winclose, Diablo II Setup" - - w_try_cd "${W_CACHE}/${W_PACKAGE}" - w_try "${WINE}" D2Patch_113c.exe - w_ahk_do " - winwait, Blizzard Updater v2.72, has completed - Sleep 1000 - send {Enter} - winwait Diablo II - Sleep 1000 - ControlClick &Cancel, Diablo II" - # Dagnabbit, the darn updater starts the game after it updates, no matter what I do? - w_killall "Game.exe" -} - -w_metadata dirt2_demo games \ - title="Dirt 2 Demo" \ - publisher="Codemasters" \ - year="2009" \ - media="manual_download" \ - file1="Dirt2Demo.zip" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Codemasters/DiRT2 Demo/dirt2.exe" - -load_dirt2_demo() -{ - w_download_manual https://www.fileplanet.com/207823/200000/fileinfo/DiRT-2-Demo Dirt2Demo.zip fbae62d04e3e33790fe78803577efc8ef9ff7e552220c944023b53315e0db9de - - w_try_unzip "${W_TMP}/${W_PACKAGE}" "${W_CACHE}/${W_PACKAGE}/Dirt2Demo.zip" - - if w_workaround_wine_bug 23532; then - w_call gfw - fi - - if w_workaround_wine_bug 24868; then - w_call d3dx9_36 - fi - - w_try_cd "${W_TMP}/${W_PACKAGE}" - - w_ahk_do " - Run, Setup.exe - WinWait, Choose Setup Language, Select - if ( w_opt_unattended > 0 ) { - sleep 500 - ControlClick Button1 ;next - WinWait, DiRT2 Demo - InstallShield Wizard, Welcome - sleep 500 - ControlClick Button1 ;next - WinWait, DiRT2 Demo - InstallShield Wizard, License - sleep 500 - ControlClick Button3 ;i accept - sleep 500 - ControlClick Button1 ;next - WinWait, DiRT2 Demo - InstallShield Wizard, Setup - sleep 500 - ControlClick Button4 ;next - WinWait, InstallShield Wizard, In order - sleep 500 - ControlClick Button1 ;next - WinWait, DiRT2 Demo - InstallShield Wizard, Ready - sleep 500 - ControlClick Button1 ;next - } - WinWait, DiRT2 Demo - InstallShield Wizard, Complete - if ( w_opt_unattended > 0 ) { - sleep 500 - ControlClick Button4 ;finish - } - WinWaitClose, DiRT2 Demo - InstallShield Wizard, Complete - " -} - -#---------------------------------------------------------------- - -w_metadata demolition_company_demo games \ - title="Demolition Company demo" \ - publisher="Giants Software" \ - year="2010" \ - media="manual_download" \ - file1="DemolitionCompanyDemoENv2.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Demolition Company Demo/DemolitionCompany.exe" - -load_demolition_company_demo() -{ - w_download_manual https://www.demolitioncompany-thegame.com/demo.php DemolitionCompanyDemoENv2.exe - - w_try_cd "${W_CACHE}/${W_PACKAGE}" - w_ahk_do " - SetTitleMatchMode, 2 - run, DemolitionCompanyDemoENv2.exe - winwait, Setup - Demolition, This will install - if ( w_opt_unattended > 0 ) { - sleep 1000 - controlclick, TNewButton1, Setup - Demolition, This will install - winwait, Setup - Demolition, License Agreement - sleep 1000 - controlclick, TNewRadioButton1, Setup - Demolition, License Agreement - sleep 1000 - controlclick, TNewButton2, Setup - Demolition, License Agreement - winwait, Setup - Demolition, Setup Type - sleep 1000 - controlclick, TNewButton2, Setup - Demolition, Setup Type - winwait, Setup - Demolition, Ready to Install - sleep 1000 - controlclick, TNewButton2, Setup - Demolition, Ready to Install - winwait, Setup - Demolition, Completing - sleep 1000 - controlclick, TNewButton2, Setup - Demolition, Completing - } - winwaitclose, Setup - Demolition - " -} - -#---------------------------------------------------------------- - -w_metadata dragonage games \ - title="Dragon Age: Origins" \ - publisher="Bioware / EA" \ - year="2009" \ - media="dvd" \ - file1="DragonAge.iso" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Dragon Age/bin_ship/daorigins.exe" - -load_dragonage() -{ - w_read_key - - # game can do this, why do we need to? - w_call physx - - w_mount DragonAge - - w_ahk_do " - SetWinDelay 1000 - Run, ${W_ISO_MOUNT_LETTER}:Setup.exe - SetTitleMatchMode, 2 - winwait, Installer Language - if ( w_opt_unattended > 0 ) { - WinActivate - send {Enter} - winwait, Dragon Age: Origins Setup - ControlClick Next, Dragon Age: Origins Setup - winwait, Dragon Age: Origins Setup, End User License - ;ControlClick Button4, Dragon Age: Origins Setup ; agree - send {Tab}a ; agree - ;ControlClick I agree, Dragon Age: Origins Setup - send {Enter} ; continue - SetTitleMatchMode, 1 - winwait, Dragon Age: Origins, Registration - send ${W_KEY} - send {Enter} - } - winwait, Dragon Age: Origins Setup, Install Type - if ( w_opt_unattended > 0 ) - send {Enter} - winwaitclose - " - # Since the installer explodes on exit, just wait for the - # last file it's known to create - while ! test -f "${W_PROGRAMS_X86_UNIX}/Dragon Age/bin_ship/DAOriginsLauncher-MCE.png"; do - w_info "Waiting for installer to finish..." - sleep 1 - done - - # FIXME: does this directory name change in Windows 7? - ini="${W_DRIVE_C}/users/${LOGNAME}/My Documents/BioWare/Dragon Age/Settings/DragonAge.ini" - if ! test -f "${ini}"; then - w_warn "${ini} not found?" - else - cp -f "${ini}" "${ini}.old" - fi - - if w_workaround_wine_bug 22557 "Setting UseVSync=0 to avoid black menu" ,4.15; then - sed 's,UseVSync=1,UseVSync=0,' < "${ini}" > "${ini}.new" - mv -f "${ini}.new" "${ini}" - fi -} - -#---------------------------------------------------------------- - -w_metadata dragonage_ue games \ - title="Dragon Age: Origins - Ultimate Edition" \ - publisher="Bioware / EA" \ - year="2010" \ - media="dvd" \ - file1="DRAGONAGE-1.iso" \ - file2="DRAGONAGE-2.iso" - -load_dragonage_ue() -{ - w_read_key - - w_mount DRAGONAGE Setup.exe 1 - - # Annoyingly, it runs a web browser so you can activate the extra stuff. Disable that, and w_warn the user after install: - WINEDLLOVERRIDES="winebrowser.exe=" - export WINEDLLOVERRIDES - - w_ahk_do " - SetTitleMatchMode, 2 - SetTitleMatchMode, slow - SetWinDelay 1000 - Run, ${W_ISO_MOUNT_LETTER}:Setup.exe - winwait, Installer, English - if ( w_opt_unattended > 0 ) { - ControlClick Button1, Installer, English - winwait, Dragon Age: Origins Setup - ControlClick Button2, Dragon Age: Origins Setup - winwait, Dragon Age: Origins Setup, License Agreement - ControlClick Button4, Dragon Age: Origins Setup - ControlClick Button2, Dragon Age: Origins Setup - winwait, Dragon Age: Origins, Registration - controlclick, Edit1 - sleep 1000 - send ${W_KEY} - send {Enter} - winwait, Dragon Age: Origins Setup, Install Type - controlclick, Button2, Dragon Age: Origins Setup, Install Type - winwait, Dragon Age: Origins Setup, expanded content - controlclick, Button1 - } - winwait, Insert Disc... - " - w_mount DRAGONAGE data/ultimate_en.rar 2 - - w_ahk_do " - sleep 5000 - SetTitleMatchMode, 2 - if ( w_opt_unattended > 0 ) { - controlclick, Button2, Insert Disc... - winwait, Dragon Age, Setup was completed successfully - controlclick, Button2, Dragon Age, Setup was completed successfully - } - winwait, Dragon Age, Click Finish to close - if ( w_opt_unattended > 0 ) { - controlclick, Button5, Dragon Age, Click Finish to close - controlclick, Button2, Dragon Age, Click Finish to close - } - winwaitclose - " - - if w_workaround_wine_bug 23730 "Run with WINEDEBUG=-all to reduce flickering" ,4.15; then - : - fi - - if w_workaround_wine_bug 23081 "If you still see flickering, try applying the patch from https://bugs.winehq.org/show_bug.cgi?id=23081" ,4.15; then - : - fi - - w_warn "To activate the additional content, visit https://social.bioware.com/redeem_code.php?path=/dragonage/pc/dlcactivate/en" -} - -#---------------------------------------------------------------- - -w_metadata dragonage2_demo games \ - title="Dragon Age II demo" \ - publisher="EA/Bioware" \ - year="2011" \ - media="download" \ - file1="DragonAge2Demo_F93M2qCj_EnEsItPlRu.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Dragon Age 2 Demo/bin_ship/DragonAge2Demo.exe" - -load_dragonage2_demo() -{ - w_download https://lvlt.bioware.cdn.ea.com/bioware/u/f/eagames/bioware/dragonage2/demo/DragonAge2Demo_F93M2qCj_EnEsItPlRu.exe 615c014deed9b97de5662774fe25074862a7873c430d5d3650d07c7ce2727e9d - - w_try_cd "${W_CACHE}/${W_PACKAGE}" - w_ahk_do " - SetWinDelay 500 - SetTitleMatchMode, 2 - run, DragonAge2Demo_F93M2qCj_EnEsItPlRu.exe - winwait, Installer Language - if ( w_opt_unattended > 0 ) { - send {Enter} - winwait, Dragon Age II Demo Setup - send {Enter} - winwait, Dragon Age II Demo Setup, License - send !a - send {Enter} - winwait, Dragon Age II Demo Setup, Select - send {Enter} - } - winwait, Dragon Age II Demo Setup, Complete, completed - if ( w_opt_unattended > 0 ) { - send {Enter} - winwait, Dragon Age II Demo Setup, Completing - send {Enter} - } - winwaitclose - " -} - -#---------------------------------------------------------------- - -w_metadata eve games \ - title="EVE Online Tyrannis" \ - publisher="CCP Games" \ - year="2017" \ - media="download" \ - file1="EveLauncher-1104888.exe" \ - installed_exe1="c:/EVE/eve.exe" - -load_eve() -{ - # https://community.eveonline.com/support/download/ - w_download https://binaries.eveonline.com/EveLauncher-1104888.exe d1d66ea0a0e4a476a926307dcdb3d7b5e777d7cff7feb172ce7779dac9fdae8f - - if test "${W_OPT_UNATTENDED}"; then - w_warn "Quiet mode doesn't work with latest eve update, button names don't appear in AHK." - fi - - w_try_cd "${W_CACHE}/${W_PACKAGE}" - w_ahk_do " - run, ${file1} - WinWait, EVE Online - if ( w_opt_unattended > 0 ) { - WinActivate - send {Enter} ; Next - WinWait, EVE,License Agreement - WinActivate - send {Enter} ; Next - WinWait, EVE,Choose Install - WinActivate - send {Enter} ; Install - WinWait, EVE,has been installed - WinActivate - ;Send {Tab}{Tab}{Tab} ; select Launch - ;Send {Space} ; untick Launch - ControlClick Button4 ; untick Launch - Send {Enter} ; Finish (Button2) - } - WinWaitClose, EVE Online - " -} - -#---------------------------------------------------------------- - -w_metadata fable_tlc games \ - title="Fable: The Lost Chapters" \ - publisher="Microsoft" \ - year="2005" \ - media="cd" \ - file1="FABLE_DISC_1.iso" \ - file2="FABLE DISC 2.iso" \ - file3="FABLE DISC 3.iso" \ - file4="FABLE DISC 4.iso" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Microsoft Games/Fable - The Lost Chapters/Fable.exe" - -load_fable_tlc() -{ - w_read_key - - if w_workaround_wine_bug 657; then - w_call mfc42 - fi - - w_mount FABLE_DISK_1 - w_ahk_do " - SetTitleMatchMode, 2 - run, ${W_ISO_MOUNT_LETTER}:setup.exe - WinWait,Fable,Welcome - if ( w_opt_unattended > 0 ) { - Sleep 500 - ControlClick Button1 ; Next - WinWait,Fable,Please - Sleep 500 - ControlClick Button4 ; Next - WinWait,Fable,Product Key - Sleep 500 - Send ${W_KEY} - Send {Enter} - } - WinWait,Fable,Disk 2 - " - w_mount "FABLE DISK 2" - w_ahk_do " - SetTitleMatchMode, 2 - WinWait,Fable,Disk 2 - if ( w_opt_unattended > 0 ) { - Sleep 500 - ControlClick Button2 ; Retry - } - WinWait,Fable,Disk 3 - " - - w_mount "FABLE DISK 3" - w_ahk_do " - SetTitleMatchMode, 2 - WinWait,Fable,Disk 3 - if ( w_opt_unattended > 0 ) { - Sleep 500 - ControlClick Button2 ; Retry - } - WinWait,Fable,Disk 4 - " - - w_mount "FABLE DISK 4" - w_ahk_do " - SetTitleMatchMode, 2 - WinWait,Fable,Disk 4 - if ( w_opt_unattended > 0 ) { - Sleep 500 - ControlClick Button2 ; Retry - } - WinWait,Fable,Disk 1 - WinKill - " - - # Now tell game what the real disc is so user can insert disc 1 and run the game! - # FIXME: don't guess it's D: - cat > "${W_TMP}/${W_PACKAGE}.reg" <<_EOF_ -REGEDIT4 - -[HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\S-1-5-18\\Products\\D3BE9C3CAF4226447B48E06CAACF2DDD\\InstallProperties] -"InstallSource"="D:\\" - -_EOF_ - try_regedit "${W_TMP_WIN}\\${W_PACKAGE}.reg" - - # Also accept EULA - cat > "${W_TMP}/${W_PACKAGE}.reg" <<_EOF_ -REGEDIT4 - -[HKEY_CURRENT_USER\\Software\\Microsoft\\Microsoft Games\\Fable TLC] -"FIRSTRUN"=dword:00000001 - -_EOF_ - try_regedit "${W_TMP_WIN}\\${W_PACKAGE}.reg" - - if w_workaround_wine_bug 24912 "Killing off lingering installer" ,4.19; then - # kill off lingering installer - w_ahk_do " - SetTitleMatchMode, 2 - WinKill,Fable - " - w_killall IDriverT.exe - w_killall IDriver.exe - fi - - if w_workaround_wine_bug 20074 "Installing native d3dx9_36" ,4.18; then - w_call d3dx9_36 - fi -} - -#---------------------------------------------------------------- - -w_metadata fifa11_demo games \ - title="FIFA 11 Demo" \ - publisher="EA Sports" \ - year="2010" \ - media="download" \ - file1="fifa11_pc_demo_NA.zip" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/EA Sports/FIFA 11 Demo/Game/fifa.exe" - -load_fifa11_demo() -{ - # From https://www.ea.com/uk/football/news/fifa11-download-2 - w_download "http://static.cdn.ea.com/fifa/u/f/fifa11_pc_demo_NA.zip" 8b51b5d7b017c4a198fdfae1c348666f99cd60271835d608357f2ad893e5be43 - - w_try unzip -d "${W_TMP}" "${W_CACHE}/${W_PACKAGE}/fifa11_pc_demo_NA.zip" - w_try_cd "${W_TMP}" - - w_ahk_do " - SetTitleMatchMode, 2 - run, EASetup.exe - winwait, Microsoft Visual C++ 2008, wizard - if ( w_opt_unattended > 0 ) { - sleep 1000 - controlclick, Button12, Microsoft Visual C++ 2008, wizard - winwait, Microsoft Visual C++ 2008, License Terms - sleep 1000 - controlclick, Button11, Microsoft Visual C++ 2008, License Terms - sleep 1000 - controlclick, Button8, Microsoft Visual C++ 2008, License Terms - winwait, Setup, is configuring - winwaitclose - winwait, Microsoft Visual C++ 2008, Setup Complete - sleep 1000 - controlclick, Button2 - ; There are two license agreements...one is for Directx - winwait, FIFA 11, I &accept the terms in the End User License Agreement - sleep 1000 - controlclick, Button1 - sleep 1000 - controlclick, Button3 - winwaitclose - winwait, FIFA 11, I &accept the terms in the End User License Agreement - sleep 1000 - controlclick, Button1, FIFA 11, I &accept the terms in the End User License Agreement - sleep 1000 - controlclick, Button3, FIFA 11, I &accept the terms in the End User License Agreement - winwait, FIFA 11, Ready to install FIFA 11 - sleep 1000 - controlclick, Button1, FIFA 11, Ready to install FIFA 11 - } - winwait, FIFA 11, Click the Finish button to exit the Setup Wizard. - if ( w_opt_unattended > 0 ) { - sleep 1000 - controlclick, Button5, FIFA 11, Click the Finish button to exit the Setup Wizard. - sleep 1000 - controlclick, Button1, FIFA 11, Click the Finish button to exit the Setup Wizard. - } - WinWaitClose - " -} - -#---------------------------------------------------------------- - -w_metadata hordesoforcs2_demo games \ - title="Hordes of Orcs 2 Demo" \ - publisher="Freeverse" \ - year="2010" \ - media="manual_download" \ - file1="HoO2Demo.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Hordes of Orcs 2 Demo/HoO2.exe" - -load_hordesoforcs2_demo() -{ - w_download_manual https://www.fileplanet.com/216619/download/Hordes-of-Orcs-2-Demo HoO2Demo.exe 9c26e420c56268ca14e5cfa6552a9034fc2ea974714b5bfd427e611dfde197be - - w_try_cd "${W_CACHE}/${W_PACKAGE}" - w_ahk_do " - SetTitleMatchMode, 2 - SetWinDelay 500 - SetTitleMatchMode, slow - run HoO2Demo.exe - WinWait,Orcs - if ( w_opt_unattended > 0 ) { - WinActivate - ControlFocus, Button1, Hordes ; Next - sleep 500 - Send n ; next - WinWait,Orcs,conditions - ControlFocus, Button4, Hordes, agree - Send {Space} - Send {Enter} ; next - WinWait,Orcs,files - Send {Enter} ; next - WinWait,Orcs,exist ; Destination does not exist, create? - Send {Enter} ; yes - WinWait,Orcs,Start - Send {Enter} ; Start - } - WinWait,Orcs,successfully - if ( w_opt_unattended > 0 ) { - Send {Space} ; Finish - } - winwaitclose Orcs - " -} - -#---------------------------------------------------------------- - -w_metadata mfsxde games \ - title="Microsoft Flight Simulator X: Deluxe Edition" \ - publisher="Microsoft" \ - year="2006" \ - media="dvd" \ - file1="FSX DISK 1.iso" \ - file2="FSX DISK 2.iso" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Microsoft Games/Microsoft Flight Simulator X/fsx.exe" - -load_mfsxde() -{ - if w_workaround_wine_bug 25139 "Setting virtual desktop so license screen shows up on first run."; then - w_call vd=1024x768 - fi - - w_mount "FSX DISK 1" - - if w_workaround_wine_bug 25558 "Copying disc to hard drive. This will take a few minutes."; then - w_try_cd "${W_CACHE}/${W_PACKAGE}" - # Copy takes a LONG time, so offer a way to avoid copy while debugging verb - if test ! -f bothdiscs/setup.exe; then - mkdir bothdiscs - w_try_cd bothdiscs - w_try cp -R "${W_ISO_MOUNT_ROOT}"/* . - - # A few files are on both DVDs. Remove them manually so cp doesn't complain. - rm -f DVDCheck.exe autorun.inf fsx.ico vcredist_x86.exe - - # Make the directories writable, else 2nd disc copy will fail. - w_try chmod -R +w . - - w_mount "FSX DISK 2" - - # On Linux, use symlinks for disc 2. (On Cygwin, we'd have to copy.) - w_try ln -s "${W_ISO_MOUNT_ROOT}"/* . - - # Make the files writable, otherwise you'll get errors when trying to remove bothdiscs. - chmod -R +w . - - # If you leave it mounted, it doesn't ask for the second disk to be inserted. - # If you mount it without extracting though, the install fails. - # Apparently it uses the files from the cache, but does a disk check. - else - w_try_cd bothdiscs - fi - else - w_die "non-broken case not yet supported for this game" - fi - - w_ahk_do " - SetWinDelay 1000 - SetTitleMatchMode, 2 - run setup.exe,,,mfs_pid - winwait, Microsoft Flight Simulator X, To continue, click Install - ControlClick, Button1, Microsoft Flight Simulator X, To continue - ; Accept license: - winwait, Flight Simulator X - End User License Agreement - controlclick, Button1, Flight Simulator X - End User License Agreement - winwait, Microsoft Flight Simulator X Product Activation Wizard - ; Activate later, currently broken on Wine, see https://bugs.winehq.org/show_bug.cgi?id=25579 - controlclick, Button2, Microsoft Flight Simulator X Product Activation Wizard - sleep 1000 - controlclick, Button5, Microsoft Flight Simulator X Product Activation Wizard - ; Close main window: - winwait, Microsoft Flight Simulator, LEARNING CENTER - ; A winclose/winkill isn't forceful enough: - process, close, fsx.exe - ; Setup doesn't close on its own, because this process doesn't exit cleanly - process, close, IDriver.exe - " -} - -#---------------------------------------------------------------- - -w_metadata mfsx_demo games \ - title="Microsoft Flight Simulator X Demo" \ - publisher="Microsoft" \ - year="2006" \ - media="download" \ - file1="FSXDemo.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Microsoft Games/Microsoft Flight Simulator X Demo/fsx.exe" - -load_mfsx_demo() -{ - if w_workaround_wine_bug 25139 "Setting virtual desktop so license screen shows up on first run"; then - w_call vd=1024x768 - fi - - # 2017/03/28: also available at http://www.gamewatcher.com/downloads/flight-simulator-x-download/flight-simulator-x-final-demo - w_download_manual "https://www.fileplanet.com/166127/160000/fileinfo/Microsoft-Flight-Simulator-X-Demo-[Final]" fsxdemo.exe 0d616d8fb6315c15e9919a29968f98b1feda14a2a284721dad114395154e58be - w_try_cd "${W_TMP}" - unzip "${W_CACHE}/${W_PACKAGE}"/FSXDemo.exe - w_ahk_do " - SetWinDelay 1000 - SetTitleMatchMode, 2 - run setup.exe,,,mfs_pid - winwait, Microsoft Flight Simulator X, To continue, click Install - ControlClick, Button1, Microsoft Flight Simulator X, To continue - ; Accept license: - winwait, Flight Simulator X - End User License Agreement - controlclick, Button1, Flight Simulator X - End User License Agreement - winwait, Microsoft Flight Simulator X Product Activation Wizard - ; Activate later, currently broken on Wine, see https://bugs.winehq.org/show_bug.cgi?id=25579 - controlclick, Button2, Microsoft Flight Simulator X Product Activation Wizard - sleep 1000 - controlclick, Button5, Microsoft Flight Simulator X Product Activation Wizard - ; Close main window: - winwait, Microsoft Flight Simulator, LEARNING CENTER - ; A winclose/winkill isn't forceful enough: - process, close, fsx.exe - ; Setup doesn't close on its own, because this process doesn't exit cleanly - process, close, IDriver.exe - " -} - -#---------------------------------------------------------------- - -w_metadata gta_vc games \ - title="Grand Theft Auto: Vice City" \ - publisher="Rockstar" \ - year="2003" \ - media="cd" \ - file1="GTA_VICE_CITY.iso" \ - file2="VICE_CITY_PLAY.iso" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Rockstar Games/Grand Theft Auto Vice City/gta-vc.exe" - -load_gta_vc() -{ - w_mount GTA_VICE_CITY - w_ahk_do " - SetWinDelay 1000 - SetTitleMatchMode, 2 - Run, ${W_ISO_MOUNT_LETTER}:Setup.exe - winwait, Choose Setup Language - if ( w_opt_unattended > 0 ) { - Send {enter} - winwait, Grand Theft Auto Vice City, Welcome to the InstallShield Wizard - Send {enter} - winwait, Grand Theft Auto Vice City, License Agreement - Send !a - send {enter} - winwait, Grand Theft Auto Vice City, Customer Information - controlclick, edit1 - send ${LOGNAME} - send {tab} - send company ; installer won't proceed without something here - send {enter} - winwait, Grand Theft Auto Vice City, Choose Destination Location - controlclick, Button1 - winwait, Grand Theft Auto Vice City, Select Components - controlclick, Button2 - winwait, Grand Theft Auto Vice City, Ready to Install the Program - send {enter} - } - winwait, Setup Needs The Next Disk, Please insert disk 2 - " - w_mount VICE_CITY_PLAY - w_ahk_do " - SetWinDelay 1000 - SetTitleMatchMode, 2 - winwait, Setup Needs The Next Disk, Please insert disk 2 - if ( w_opt_unattended > 0 ) { - controlclick, Button2 - } - winwait, Grand Theft Auto Vice City, InstallShield Wizard Complete - if ( w_opt_unattended > 0 ) { - send {enter} - } - winwaitclose - " - - if w_workaround_wine_bug 26322 "Setting virtual desktop"; then - w_call vd=800x600 - fi - - myexec="Exec=env WINEPREFIX=\"${WINEPREFIX}\" wine cmd /c 'C:\\\\\\\\Run-gta_vc.bat'" - mymenu="${XDG_DATA_HOME}/applications/wine/Programs/Rockstar Games/Grand Theft Auto Vice City/Play GTA Vice City.desktop" - if test -f "${mymenu}" && w_workaround_wine_bug 26304 "Fixing system menu"; then - # this is a hack, hopefully the wine bug will be fixed soon - sed -i "s,Exec=.*,${myexec}," "${mymenu}" - fi -} - -#---------------------------------------------------------------- - -w_metadata kotor1 games \ - title="Star Wars: Knights of the Old Republic" \ - publisher="LucasArts" \ - year="2003" \ - media="cd" \ - file1="KOTOR_1.iso" \ - file2="KOTOR_2.iso" \ - file3="KOTOR_3.iso" \ - file4="KOTOR_4.iso" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/LucasArts/SWKotOR/swkotor.exe" - -load_kotor1() -{ - w_mount "KOTOR_1" - w_ahk_do " - SetTitleMatchMode 2 - SetWinDelay 500 - run ${W_ISO_MOUNT_LETTER}:setup.exe - winwait Star Wars, Welcome - if ( w_opt_unattended > 0 ) { - controlclick button1 - winwait Star Wars, Licensing Agreement - controlclick button2 - winwait Question, Licensing Agreement - controlclick button1 - winwait Star Wars, Destination Folder - controlclick button1 - winwait Star Wars, Program Folder - controlclick button2 - winwait Star Wars, Additional Shortcuts - ;unselect start menu shortcuts - controlclick button1 - controlclick button2 - controlclick button3 - controlclick button4 - controlclick button5 - controlclick button11 - winwait Star Wars, Review settings - controlclick button1 - } - winwait Next Disk, Please insert disk 2 - " - w_mount "KOTOR_2" - w_ahk_do " - SetTitleMatchMode 2 - if ( w_opt_unattended > 0 ) { - winwait Next Disk - controlclick button2 - } - winwait Next Disk, Please insert disk 3 - " - w_mount "KOTOR_3" - w_ahk_do " - SetTitleMatchMode 2 - if ( w_opt_unattended > 0 ) { - winwait Next Disk - controlclick button2 - } - winwait Next Disk, Please insert disk 4 - " - w_mount "KOTOR_4" - w_ahk_do " - SetTitleMatchMode 2 - if ( w_opt_unattended > 0 ) { - winwait Next Disk - controlclick button2 - winwait Question, Desktop - controlclick button2 - winwait Question, DirectX - controlclick button2 ;don't install directx - } - winwait Star Wars, Complete - if ( w_opt_unattended > 0 ) { - controlclick button1 ;don't launch game - controlclick button4 - } - winwaitclose Star Wars, Complete - " -} - -#---------------------------------------------------------------- - -w_metadata losthorizon_demo games \ - title="Lost Horizon Demo" \ - publisher="Deep Silver" \ - year="2010" \ - media="manual_download" \ - file1="Lost_Horizon_Demo_EN.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Deep Silver/Lost Horizon Demo/fsasgame.exe" - -load_losthorizon_demo() -{ - w_download_manual https://www.fileplanet.com/215704/download/Lost-Horizon-Demo Lost_Horizon_Demo_EN.exe - - w_try_cd "${W_CACHE}/${W_PACKAGE}" - - w_ahk_do " - SetTitleMatchMode, 2 - run Lost_Horizon_Demo_EN.exe - WinWait,Lost Horizon Demo, Destination - # shellcheck disable=SC2086 - if ( w_opt_unattended > 0 ) { - Sleep 500 - Send {RAW}${W_TMP} - ControlClick Button2 ;Install - WinWaitClose,Lost Horizon Demo,Installation - Sleep 1000 - Click, Left, 169, 371 - WinWait,Lost Horizon Demo - InstallShield Wizard,Welcome - Sleep 500 - ControlClick Button1 ;Next - WinWait,Lost Horizon Demo - InstallShield Wizard,License - ControlFocus,Button3,Lost Horizon Demo - Sleep 500 - Send {Space} - ControlClick Button1 ;Next - WinWait,Lost Horizon Demo - InstallShield Wizard,program - Sleep 500 - ControlClick Button2 ;Next - WinWait,Lost Horizon Demo - InstallShield Wizard,features - Sleep 500 - ControlClick Button4 ;Next - WinWait,Lost Horizon Demo - InstallShield Wizard,begin - Sleep 500 - ControlClick Button1 ;Next - } - WinWaitClose - WinWait,Lost Horizon Demo - InstallShield Wizard,Complete - if ( w_opt_unattended > 0 ) { - ControlFocus,Button2,Lost Horizon - Sleep 500 - Send {Space} - Sleep 500 - ControlClick Button4 ; Finish - } - WinWaitClose - " -} - -#---------------------------------------------------------------- - -w_metadata lhp_demo games \ - title="LEGO Harry Potter Demo [Years 1-4]" \ - publisher="Travellers Tales / WB" \ - year="2010" \ - media="manual_download" \ - file1="LEGOHarryPotterDEMO.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/WB Games/LEGO_Harry_Potter_DEMO/LEGOHarryPotterDEMO.exe" - -load_lhp_demo() -{ - case "${LANG}" in - *UTF-8*|*utf8*) ;; - pt*) - w_warn "O instalaou falhou em uma localização não utf-8. Utilize 'export LANG=en_US.UTF-8' para contornar." - LANG=en_US.UTF-8 - export LANG - ;; - *) - w_warn "This installer fails in non-utf-8 locales. Doing 'export LANG=en_US.UTF-8' is a workaround." - LANG=en_US.UTF-8 - export LANG - ;; - esac - - w_download_manual "https://www.fileplanet.com/213663/210000/fileinfo/LEGO-Harry-Potter:-Years-1-4-Demo" "${file1}" 01d8e88511d71f5dd1492034ea4b00eacdbbf891ef23cffa31413d232eee3647 - - w_try_cd "${W_CACHE}/${W_PACKAGE}" - w_ahk_do " - SetTitleMatchMode, 2 - run, ${file1} - winwait, LEGO, language - if ( w_opt_unattended > 0 ) { - controlclick, Button1 - winwait, LEGO, License - controlclick, Button1 - controlclick, Button2 - winwait, LEGO, installation method - controlclick, Button2 - } - winwait, LEGO, Finish - if ( w_opt_unattended > 0 ) - controlclick, Button1 - - winwaitclose, LEGO, Finish - " - - # Work around locale issues by symlinking the app's directory to not have a funny char - # Won't really work on Cygwin, but that's ok. - w_try_cd "${W_PROGRAMS_X86_UNIX}/WB Games" - ln -s LEGO*Harry\ Potter*DEMO LEGO_Harry_Potter_DEMO -} - -#---------------------------------------------------------------- - -w_metadata lswcs games \ - title="Lego Star Wars Complete Saga" \ - publisher="Lucasarts" \ - year="2009" \ - media="dvd" \ - file1="LEGOSAGA.iso" \ - installed_file1="${W_PROGRAMS_X86_WIN}/LucasArts/LEGO Star Wars - The Complete Saga/LEGOStarWarsSaga.exe" - -load_lswcs() -{ - w_mount LEGOSAGA - w_ahk_do " - run ${W_ISO_MOUNT_LETTER}:setup.exe - SetTitleMatchMode, 2 - winwait, Choose Setup Language - if ( w_opt_unattended > 0 ) { - send {Enter} - winwait, LEGO, License Agreement - send a{Enter} - } - winwait, LEGO, method - if ( w_opt_unattended > 0 ) { - ControlClick Easy Installation - sleep 1000 - } - winwaitclose, LEGO - " - w_warn "This game is copy-protected, and requires the real disc in a real drive to run." -} - -#---------------------------------------------------------------- - -w_metadata lemonysnicket games \ - title="Lemony Snicket: A Series of Unfortunate Events" \ - publisher="Activision" \ - year="2004" \ - media="cd" \ - file1="Lemony Snicket.iso" - -load_lemonysnicket() -{ - w_mount "Lemony Snicket" - w_ahk_do " - SetTitleMatchMode, 2 - Run, ${W_ISO_MOUNT_LETTER}:setup.exe - WinWait, Lemony, Welcome - if ( w_opt_unattended > 0 ) { - sleep 1000 - ControlClick, Button1 ; Next - WinWait, Lemony, License - sleep 1000 - ControlClick, Button2 ; Accept - WinWait, Lemony, Minimum System - sleep 1000 - ControlClick, Button2 ; Yes - WinWait, Lemony, Destination - sleep 1000 - ControlClick, Button1 ; Next - WinWait, Lemony, Select Program Folder - sleep 1000 - ControlClick, Button2 ; Next - WinWait, Lemony, Start Copying - sleep 1000 - ControlClick, Button1 ; Next - WinWait, Question, Would you like to add a desktop shortcut - sleep 1000 - ControlClick, Button2 ; No - WinWait, Question, Would you like to register - sleep 1000 - ControlClick, Button2 ; No - ;WinWait, Information, Please register - ;sleep 1000 - ;ControlClick, Button1 ; OK - WinWait, Lemony, Complete - sleep 1000 - ControlClick, Button4 ; Finish - WinWait, Lemony, Play - sleep 1000 - ControlClick, Button6 ; Exit - WinWait, Lemony, Are you sure - sleep 1000 - ControlClick, Button1 ; Yes already - } - WinWaitClose, Lemony - " -} - -#---------------------------------------------------------------- - -w_metadata luxor_ar games \ - title="Luxor Amun Rising" \ - publisher="MumboJumbo" \ - year="2006" \ - media="cd" \ - file1="LUXOR_AMUNRISING.iso" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/MumboJumbo/Luxor Amun Rising/Luxor AR.exe" - -load_luxor_ar() -{ - w_mount LUXOR_AMUNRISING - - w_ahk_do " - SetWinDelay, 500 - SetTitleMatchMode, 2 - run, ${W_ISO_MOUNT_LETTER}:Luxor_AR_Setup.exe - winwait, Luxor - if ( w_opt_unattended > 0 ) { - ControlClick, Button2 ; Agree - winwait, Folder - ControlClick, Button2 ; Install - winwait, Completed - ControlClick, Button2 ; Next - } - winwait, Success - if ( w_opt_unattended > 0 ) { - ControlClick, Button6 ; Uncheck Play - ControlClick, Button2 ; Close - } - winwaitclose - " -} - -#---------------------------------------------------------------- - -w_metadata masseffect2 games \ - title="Mass Effect 2 (DRM broken on Wine)" \ - publisher="BioWare" \ - year="2010" \ - media="dvd" \ - file1="MassEffect2.iso" \ - file2="ME2_Disc2.iso" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Mass Effect 2/Binaries/MassEffect2.exe" - -load_masseffect2() -{ - w_mount MassEffect2 - w_read_key - - w_ahk_do " - SetTitleMatchMode, 2 - run, ${W_ISO_MOUNT_LETTER}:Setup.exe - winwait, Installer Language - if ( w_opt_unattended > 0 ) { - send {Enter} - winwait, Mass Effect - send {Enter} - winwait, Mass Effect, License - ControlClick, Button4 - ControlClick, Button2 - winwait, Mass Effect, Registration Code - send ${W_KEY} - ControlClick, Button2 - winwait, Mass Effect, Install Type - ControlClick, Button2 - } - winwait, Insert Disc - " - sleep 5 - w_mount ME2_Disc2 - w_ahk_do " - SetTitleMatchMode, 2 - if ( w_opt_unattended > 0 ) { - winwait, Insert Disc - ControlClick, Button4 - ; on windows, the first click doesn't seem to do it, so press enter, too - sleep 1000 - send {Enter} - } - ; Some installs may not get to this point due to an installer hang/crash (bug 22919) - ; The hang/crash happens after the PhysX install but does not seem to affect gameplay - loop - { - ifwinexist, Mass Effect, Finish - { - if ( w_opt_unattended > 0 ) { - winkill, Mass Effect - } - break - } - Process, exist, Installer.exe - me2pid = %ErrorLevel% - if me2pid = 0 - break - sleep 1000 - } - " -} - -#---------------------------------------------------------------- - -w_metadata masseffect2_demo games \ - title="Mass Effect 2" \ - publisher="BioWare" \ - year="2010" \ - media="download" \ - file1="MassEffect2DemoEN.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Mass Effect 2 Demo/Binaries/MassEffect2.exe" - -load_masseffect2_demo() -{ - w_download http://static.cdn.ea.com/bioware/u/f/eagames/bioware/masseffect2/ME2_DEMO/MassEffect2DemoEN.exe 4ec5ce1dc90c10512324d24cba2b5b9ba1e1872ed4c23e3ede0fc0accc7d2ff2 - - # Don't let self-extractor write into $W_CACHE - case "${W_PLATFORM}" in - windows_cmd|wine_cmd) - cp "${W_CACHE}/${W_PACKAGE}/MassEffect2DemoEN.exe" "${W_TMP}" - chmod +x "${W_TMP}"/MassEffect2DemoEN.exe ;; - *) - ln -sf "${W_CACHE}/${W_PACKAGE}/MassEffect2DemoEN.exe" "${W_TMP}" ;; - esac - w_try_cd "${W_TMP}" - w_ahk_do " - SetWinDelay 1000 - SetTitleMatchMode, 2 - run, MassEffect2DemoEN.exe - winwait, Mass Effect 2 Demo - if ( w_opt_unattended > 0 ) { - send {Enter} - winwait, Mass Effect 2 Demo, conflicts - send {Enter} - winwait, Mass Effect, License - ControlClick, Button4 - ;ControlClick, Button2 - send {Enter} - winwait, Mass Effect, Install Type - ControlClick, Button2 - } - ; Some installs may not get to this point due to an installer hang/crash (bug 22919) - ; The hang/crash happens after the PhysX install but does not seem to affect gameplay - loop - { - ifwinexist, Mass Effect, Finish - { - if ( w_opt_unattended > 0 ) { - winkill, Mass Effect - } - break - } - Process, exist, Installer.exe - me2pid = %ErrorLevel% - if me2pid = 0 - break - sleep 1000 - } - " -} - -#---------------------------------------------------------------- - -w_metadata maxmagicmarker_demo games \ - title="Max & the Magic Marker Demo" \ - publisher="Press Play" \ - year="2010" \ - media="download" \ - file1="max_demo_pc.zip" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/maxmagicmarker_demo/max and the magic markerdemo pc.exe" - -load_maxmagicmarker_demo() -{ - w_download https://www.maxandthemagicmarker.com/maxdemo/max_demo_pc.zip 6e2abd0cbd0ad04bfea9663402d7e9f24864d3f1c32df69eebf92dfc469fe6dd - - w_try_unzip "${W_PROGRAMS_X86_UNIX}/${W_PACKAGE}" "${W_CACHE}/${W_PACKAGE}"/max_demo_pc.zip - # Work around bug in game?! - w_try_cd "${W_PROGRAMS_X86_UNIX}/${W_PACKAGE}" - mv "max and the magic markerdemo pc" "max and the magic markerdemo pc"_Data -} - -#---------------------------------------------------------------- - -w_metadata mdk games \ - title="MDK (3dfx)" \ - publisher="Playmates International" \ - year="1997" \ - media="cd" \ - file1="MDK.iso" \ - installed_exe1="C:/SHINY/MDK/MDK3DFX.EXE" - -load_mdk() -{ - # Needed even on Windows, some people say. Haven't tried the D3D version on win7 yet. - w_call glidewrapper - - w_download http://www.falconfly.de/downloads/patch-mdk3dfx.zip 9b9413609ed147944fa44bb5f51b35cf6baa7657e7e1a9891ad68d858275e00b - - w_mount MDK - w_try_cd "${W_ISO_MOUNT_ROOT}" - w_ahk_do " - SetTitleMatchMode, 2 - SetTitleMatchMode, slow - run ${W_ISO_MOUNT_LETTER}:setup.exe - winwait, MDK - if ( w_opt_unattended > 0 ) { - click, left, 80, 80 ; USA - winwait, Welcome, purchasing MDK - ControlClick, Button1 ; Next - winwait, Select Target Platform - ControlClick, Button6 ; Next - winwait, Select Installation Options - ControlClick, Button3 ; Large - ControlClick, Button6 ; Next - winwait, Destination - ControlClick, Button1 ; Next - winwait, Program Folder - ControlClick, Button2 ; Next - winwait, Start - ControlClick, Button1 ; Next - Loop { - IfWinExist, Setup, ProgramFolder - send {Enter} - IfWinExist, Setup Complete - break - sleep 500 - } - } - WinWait, Setup Complete - if ( w_opt_unattended > 0 ) { - ControlClick, Button1 ; uncheck readme - ControlClick, Button4 ; Finish - WinWait, Question, DirectX - ControlClick, Button2 ; No - WinWait, Information, complete - ControlClick, Button1 ; No - } - WinWaitClose - " - w_try_cd "${W_DRIVE_C}/SHINY/MDK" - w_try_unzip . "${W_CACHE}/${W_PACKAGE}"/patch-mdk3dfx.zip - - # TODO: Wine fails to install menu items, add a workaround for that -} - -#---------------------------------------------------------------- - -w_metadata menofwar games \ - title="Men of War" \ - publisher="Aspyr Media" \ - year="2009" \ - media="dvd" \ - file1="Men of War.iso" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Aspyr/Men of War/mow.exe" - -load_menofwar() -{ - w_mount "Men of War" - - w_try_cd "${W_ISO_MOUNT_ROOT}" - w_ahk_do " - SetTitleMatchMode, 2 - SetTitleMatchMode, slow - run ${W_ISO_MOUNT_LETTER}:setup.exe - winwait, Select Setup Language, Select the language - if ( w_opt_unattended > 0 ) { - sleep 1000 - ControlClick, TNewButton1, Select Setup Language, Select the language - winwait, Men of War - sleep 1000 - ControlClick, TButton4, Men of War - winwait, Setup - Men of War, ACCEPTANCE OF AGREEMENT - sleep 1000 - ControlClick, TNewRadioButton1, Setup - Men of War, ACCEPTANCE OF AGREEMENT - ControlClick, TNewButton1, Setup - Men of War, ACCEPTANCE OF AGREEMENT - } - winwait, Setup - Men of War, Setup has finished installing - if ( w_opt_unattended > 0 ) { - sleep 1000 - ControlClick, x242 y254 - ControlClick, x242 y278 - ControlClick, TNewButton1, Setup - Men of War, Setup has finished - } - " -} - -#---------------------------------------------------------------- - -w_metadata myth2_demo games \ - title="Myth II demo 1.8.0" \ - publisher="Project Magma" \ - year="2011" \ - media="download" \ - file1="Myth2_Demo_180.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Myth II Demo/Myth II Demo.exe" \ - homepage="https://projectmagma.net/" - -load_myth2_demo() -{ - # Originally a 1998 game by Bungie; according to Wikipedia, they handed the - # source code to Project Magma for further development. - - # 2017/03/27: 1a5e11be25c43491e2b4da5291b646ffe5330a6289bef236f404906e3b4f5e96 - w_download https://tain.totalcodex.net/items/download/myth-ii-demo-windows 1a5e11be25c43491e2b4da5291b646ffe5330a6289bef236f404906e3b4f5e96 Myth2_Demo_180.exe - - w_try_cd "${W_TMP}" - w_try unzip "${W_CACHE}/${W_PACKAGE}/${file1}" - - w_ahk_do " - SetTitleMatchMode, 2 - SetWinDelay 500 - run, ${file1} - winwait, Setup, Welcome - if ( w_opt_unattended > 0 ) { - winactivate - send {Enter} ; next - winwait, Setup, Components - send {Enter} ; next - winwait, Setup, Location - send {Enter} ; install - } - winwait, Setup, Complete - if ( w_opt_unattended > 0 ) { - controlclick, Button4 ; Do not run - controlclick, Button2 ; Finish - } - winwaitclose - " -} - -#---------------------------------------------------------------- - -w_metadata nfsshift_demo games \ - title="Need for Speed: SHIFT Demo" \ - publisher="EA" \ - year="2009" \ - media="download" \ - file1="NFSSHIFTPCDEMO.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Electronic Arts/Need for Speed SHIFT Demo/shiftdemo.exe" - -load_nfsshift_demo() -{ - # Originally at http://cdn.needforspeed.com/data/downloads/shift/NFSSHIFTPCDEMO.exe - # 2011/11/12: http://www.legendaryreviews.com/download-center/demos/NFSSHIFTPCDEMO.exe - # 2022/08/15: https://download.nvidia.com/downloads/nZone/demos/SHIFTDemo.exe - w_download https://download.nvidia.com/downloads/nZone/demos/SHIFTDemo.exe 5ad011e7dd42e3404e3191009cd81c05b891e7c138d61f958fce9506ff8c9de3 NFSSHIFTPCDEMO.exe - - w_try cp "${W_CACHE}/${W_PACKAGE}/${file1}" "${W_TMP}" - - w_try_cd "${W_TMP}" - w_ahk_do " - SetTitleMatchMode, 2 - SetTitleMatchMode, slow - run, ${file1} - winwait, WinRAR - if ( w_opt_unattended > 0 ) { - ControlClick, Button2 - winwait, SHIFT, View the readme - controlclick, Button1 - ; Not all systems need the Visual C++ runtime - loop - { - ifwinexist, Visual C++ - { - controlclick, Button1 - break - } - ifwinexist, Setup, SHIFT Demo License - { - break - } - sleep 1000 - } - winwait, Setup, SHIFT Demo License - Sleep 1000 - send {Space} - Sleep 1000 - send {Enter} - winwait, Setup, DirectX - Sleep 1000 - send {Space} - Sleep 1000 - send {Enter} - winwait, Setup, Destination - Sleep 1000 - send {Enter} - winwait, Setup, begin - Sleep 1000 - controlclick, Button1 - } - winwait, Setup, Finish - if ( w_opt_unattended > 0 ) { - Sleep 1000 - controlclick, Button5 - controlclick, Button1 - } - winwaitclose, Setup, Finish - " -} - -#---------------------------------------------------------------- - -w_metadata oblivion games \ - title="Elder Scrolls: Oblivion" \ - publisher="Bethesda Game Studios" \ - year="2006" \ - media="dvd" \ - file1="Oblivion.iso" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Bethesda Softworks/Oblivion/Oblivion.exe" - -load_oblivion() -{ - w_mount "Oblivion" - - w_try_cd "${W_ISO_MOUNT_ROOT}" - w_ahk_do " - SetTitleMatchMode, 2 - run, Setup.exe - winwait, Oblivion, Welcome to the - if ( w_opt_unattended > 0 ) { - sleep 500 - controlclick, Button1 - winwait, Oblivion, License Agreement - sleep 500 - controlclick, Button3 - sleep 500 - controlclick, Button1 - winwait, Oblivion, Choose Destination - sleep 500 - controlclick, Button1 - winwait, Oblivion, Ready to Install - sleep 500 - controlclick, Button1 - winwait, Oblivion, Complete - sleep 500 - controlclick, Button1 - sleep 500 - controlclick, Button2 - sleep 500 - controlclick, Button3 - } - winwaitclose, Oblivion, Complete - " - - if w_workaround_wine_bug 20074 "Installing native d3dx9_36" ,4.18; then - w_call d3dx9_36 - fi -} - -#---------------------------------------------------------------- - -w_metadata penpenxmas games \ - title="Pen-Pen Xmas Olympics" \ - publisher="Army of Trolls / Black Cat" \ - year="2007" \ - media="download" \ - file1="PenPenXmasOlympics100.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/PPO/PPO.exe" - -load_penpenxmas() -{ - W_BROWSERAGENT=1 \ - w_download http://retrospec.sgn.net/download/files/PenPenXmasOlympics100.exe c35c5c6a9a3fa62d6b099713e72390d0490320534dba958b57b94f0a6ab458db - - w_try_cd "${W_CACHE}/${W_PACKAGE}" - "${WINE}" PenPenXmasOlympics100.exe ${W_OPT_UNATTENDED:+/S} -} - -#---------------------------------------------------------------- - -w_metadata popfs games \ - title="Prince of Persia: The Forgotten Sands" \ - publisher="Ubisoft" \ - year="2010" \ - media="dvd" \ - file1="PoP_TFS.iso" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Ubisoft/Prince of Persia The Forgotten Sands/Prince of Persia.exe" - -load_popfs() -{ - w_mount PoP_TFS - - w_ahk_do " - SetTitleMatchMode, 2 - run, ${W_ISO_MOUNT_LETTER}:Setup.exe - winwait, Prince of Persia, Language - if ( w_opt_unattended > 0 ) { - sleep 500 - ControlClick, Button3 - winwait, Prince of Persia, Welcome - sleep 500 - ControlClick, Button1 - winwait, Prince of Persia, License - sleep 500 - ControlClick, Button5 - sleep 500 - ControlClick, Button2 - winwait, Prince of Persia, Click Install - sleep 500 - ControlClick, Button1 - ; Avoid error when creating desktop shortcut - Loop - { - IfWinActive, Prince of Persia, Click Finish - break - IfWinExist, Prince of Persia, desktop shortcut - { - sleep 500 - ControlClick, Button1, Prince of Persia, desktop shortcut - break - } - sleep 5000 - } - } - winwait, Prince of Persia, Click Finish - if ( w_opt_unattended > 0 ) { - sleep 500 - ControlClick, Button4 - } - " -} - -#---------------------------------------------------------------- - -w_metadata rct3deluxe games \ - title="RollerCoaster Tycoon 3 Deluxe (DRM broken on Wine)" \ - publisher="Atari" \ - year="2004" \ - media="cd" \ - file1="RCT3.iso" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Atari/RollerCoaster Tycoon 3/RCT3.EXE" - -load_rct3deluxe() -{ - if w_workaround_wine_bug 21448; then - w_warn "DRM doesn't work, see https://bugs.winehq.org/show_bug.cgi?id=21448" - fi - - w_mount RCT3 - - # FIXME: make videos and music work - # Game still doesn't show .wmv logo videos nor play .wma background audio in menu - # though it does in Jake's screencast. Loading wmp9 and devenum gets it to - # try to load the .wmv logos, but it crashes in quartz :-( - # But at least it's playable without the logo videos and background. - - w_ahk_do " - SetWinDelay 500 - SetTitleMatchMode, 2 - run ${W_ISO_MOUNT_LETTER}:setup-rtc3.exe - if ( w_opt_unattended > 0 ) { - WinWait, Select Setup Language - controlclick, TButton1 ; accept - WinWait Setup - RollerCoaster Tycoon 3, Welcome - controlclick, TButton1 ; Next - WinWait Setup - RollerCoaster Tycoon 3, License - controlclick, TRadioButton1 ; Accept - sleep 500 - controlclick, TButton2 ; Next - WinWait Setup - RollerCoaster Tycoon 3, Destination - controlclick, TButton3 ; Next - WinWait Setup - RollerCoaster Tycoon 3, Start Menu - controlclick, TButton4 ; Next - WinWait Setup - RollerCoaster Tycoon 3, Additional - controlclick, TButton4 ; Next - WinWait Setup - RollerCoaster Tycoon 3, begin - controlclick, TButton4 ; Install - WinWait, Atari Product Registration - controlclick, Button6 ; Close - WinWait, Product Registration, skip - controlclick, Button2 ; Yes, skip - } - WinWait Setup - RollerCoaster Tycoon 3, finished - if ( w_opt_unattended > 0 ) { - controlclick, TNewCheckListBox1 ; uncheck Launch - controlclick, TButton4 ; Finish - } - WinWaitClose Setup - RollerCoaster Tycoon 3, finished - " -} - -#---------------------------------------------------------------- - -w_metadata riseofnations_demo games \ - title="Rise of Nations Trial" \ - publisher="Microsoft" \ - year="2003" \ - media="manual_download" \ - file1="RiseOfNationsTrial.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Microsoft Games/Rise of Nations Trial/nations.exe" - -load_riseofnations_demo() -{ - w_download_manual https://download.cnet.com/Rise-of-Nations-Trial-Version/3000-7562_4-10730812.html RiseOfNationsTrial.exe f0bd8be3999164e669aad33583e372ca0f530b1a2ac0194a4c13b265e9cdf744 - - w_try_cd "${W_CACHE}/${W_PACKAGE}" - - w_ahk_do " - SetTitleMatchMode, 2 - run RiseOfNationsTrial.exe - WinWait,Rise Of Nations Trial Setup - if ( w_opt_unattended > 0 ) { - sleep 2500 - ControlClick CButtonClassName2 - WinWait,Rise Of Nations Trial Setup, installed - sleep 2500 - ControlClick CButtonClassName7 - } - WinWaitClose - " - - if w_workaround_wine_bug 9027; then - w_call directmusic - fi -} - -#---------------------------------------------------------------- - -w_metadata secondlife games \ - title="Second Life Viewer" \ - publisher="Linden Labs" \ - year="2003-2011" \ - media="download" \ - file1="Second_Life_3-2-8-248931_Setup.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/SecondLifeViewer/SecondLife.exe" - -load_secondlife() -{ - w_download http://download.cloud.secondlife.com/Viewer-3/Second_Life_3-2-8-248931_Setup.exe d155366f16bfe23f33a6b6d63f366691be2d0554429916da875ea78d0e0de8a6 - - w_try_cd "${W_CACHE}/${W_PACKAGE}" - w_ahk_do " - SetTitleMatchMode, 2 - SetWinDelay 500 - run, ${file1} - if ( w_opt_unattended > 0 ) { - winwait, Installer Language - send {Enter} - winwait, Installation Folder - send {Enter} - } - winwait, Second Life, Start Second Life now - if ( w_opt_unattended > 0 ) { - send {Tab}{Enter} - } - winwaitclose - " -} - -#---------------------------------------------------------------- - -w_metadata sims3 games \ - title="The Sims 3 (DRM broken on Wine)" \ - publisher="EA" \ - year="2009" \ - media="dvd" \ - file1="Sims3.iso" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Electronic Arts/The Sims 3/Game/Bin/TS3.exe" - -load_sims3() -{ - w_read_key - - w_mount Sims3 - # Default lang, USA, accept defaults, uncheck EA dl mgr, uncheck readme - w_ahk_do " - run ${W_ISO_MOUNT_LETTER}:Sims3Setup.exe - winwait, Choose Setup Language - if ( w_opt_unattended > 0 ) { - send {Enter} - SetTitleMatchMode, 2 - winwait, - InstallShield Wizard - sleep 1000 - ControlClick &Next >, - InstallShield Wizard - sleep 1000 - send uuuuuu{Tab}{Tab}{Enter} - sleep 1000 - send a{Enter} - sleep 1000 - send {Raw}${W_KEY} - send {Enter} - winwait, - InstallShield Wizard, Setup Type - send {Enter} - winwait, - InstallShield Wizard, Click Install to begin - send {Enter} - winwait, - InstallShield Wizard, EA Download Manager - ControlClick Yes, - InstallShield Wizard - send {Enter} - } - winwait, - InstallShield Wizard, Complete - if ( w_opt_unattended > 0 ) { - ControlClick View the readme file, - InstallShield Wizard - ControlClick Finish, - InstallShield Wizard - } - winwaitclose - " - w_umount - - # DVD region code is last digit. - # FIXME: download appropriate one rather than just US version. - w_download http://akamai.cdn.ea.com/eadownloads/u/f/sims/sims3/patches/TS3_1.19.44.010001_Update.exe 9428b32638108e51e63455b60f3cfd5b5aca07b55ce58a200087631a02b5336c - - w_try_cd "${W_CACHE}/${W_PACKAGE}" - w_ahk_do " - run TS3_1.19.44.010001_Update.exe - SetTitleMatchMode, 2 - winwait, - InstallShield Wizard, Complete - if ( w_opt_unattended > 0 ) { - ControlClick Finish, - InstallShield Wizard - } - winwaitclose - " -} - -#---------------------------------------------------------------- - -w_metadata simsmed games \ - title="The Sims Medieval (DRM broken on Wine)" \ - publisher="EA" \ - year="2011" \ - media="dvd" \ - file1="TSimsM.iso" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Electronic Arts/The Sims Medieval/Game/Bin/TSM.exe" - -load_simsmed() -{ - w_read_key - - w_mount TSimsM - # Default lang, USA, accept defaults, uncheck EA dl mgr, uncheck readme - w_ahk_do " - SetTitleMatchMode, 2 - SetWinDelay 1000 - run ${W_ISO_MOUNT_LETTER}:SimsMedievalSetup.exe - winwait, Choose Setup Language - if ( w_opt_unattended > 0 ) { - send {Enter} - SetTitleMatchMode, 2 - winwait, - InstallShield Wizard - ControlClick &Next >, - InstallShield Wizard - sleep 1000 - send uuuuuu{Tab}{Tab}{Enter} - WinWait, Sims, License - ControlClick Button3 ; Accept - sleep 1000 - ControlClick Button1 ; Next - sleep 1000 - send {Raw}${W_KEY} - send {Enter} - winwait, - InstallShield Wizard, Setup Type - ControlClick &Complete ; was not defaulting to complete? - send {Enter} - winwait, - InstallShield Wizard, Click Install to begin - send {Enter} - - ; Handle optional dialogs - ; In Wine-1.3.16 and lower, before - ; https://www.winehq.org/pipermail/wine-cvs/2011-March/076262.html, - ; wine didn't claim to already have .net 4 installed, - ; and ran into bug 25535. - Loop - { - ; .net 4 install sometimes fails nicely - ifWinExist,, .NET Framework 4 has not been installed - { - ControlClick Button3 ; Finish - } - ; .net 4 install sometimes explodes - ifWinExist .NET Framework Initialization Error - { - send {Enter} - } - ifWinExist, Sims, Customer Experience Improvement - { - send {Enter} ; Next - } - ifWinExist, - InstallShield Wizard, Complete - break - sleep 1000 - } - } - winwait, - InstallShield Wizard, Complete - if ( w_opt_unattended > 0 ) { - ControlClick Button1 ; Do not view readme - send {Enter} ; Finish - } - winwaitclose - " - - # DVD region code is last digit. - # FIXME: download appropriate one rather than just US version. - w_download http://akamai.cdn.ea.com/eadownloads/u/f/sims/sims/patches/TheSimsMedievalPatch_1.1.10.00001_Update.exe 01c0f9e3394d93869f67f1319b80a1257fe421bbdf911a15c8c7ab43f2e73683 - - w_try_cd "${W_CACHE}/${W_PACKAGE}" - w_ahk_do " - SetTitleMatchMode, 2 - SetWinDelay 500 - run TheSimsMedievalPatch_1.1.10.00001_Update.exe - winwait, Medieval, will reset any in-progress quests - send {Enter} - winwait, Medieval, Welcome - if ( w_opt_unattended > 0 ) { - send {Enter} - } - winwait, - InstallShield Wizard, Complete - if ( w_opt_unattended > 0 ) { - ControlClick Finish, - InstallShield Wizard - } - winwaitclose - " -} - -#---------------------------------------------------------------- - -w_metadata sims3_gen games \ - title="The Sims 3: Generations (DRM broken on Wine)" \ - publisher="EA" \ - year="2011" \ - media="dvd" \ - file1="Sims3EP04.iso" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Electronic Arts/The Sims 3 Generations/Game/Bin/TS3EP04.exe" - -load_sims3_gen() -{ - if [ ! -f "${W_PROGRAMS_X86_WIN}/Electronic Arts/The Sims 3/Game/Bin/TS3.exe" ]; then - w_die "You must have sims3 installed to install sims3_gen!" - fi - - w_read_key - w_mount Sims3EP04 - - # Default lang, USA, accept defaults, uncheck EA dl mgr, uncheck readme - w_ahk_do " - SetTitleMatchMode, 2 - SetWinDelay 1000 - run ${W_ISO_MOUNT_LETTER}:Sims3EP04Setup.exe - winwait, - InstallShield Wizard - if ( w_opt_unattended > 0 ) { - send {Enter} - loop - { - SetTitleMatchMode, 2 - ifwinexist, - InstallShield Wizard, Setup will now attempt to update - { - ControlClick, Button1, - InstallShield Wizard - sleep 1000 - winwait, - InstallShield Wizard, Setup has finished updating The Sims - sleep 1000 - controlclick, Button1, - InstallShield Wizard - sleep 1000 - } - ifwinexist, Sims, License - { - winactivate, Sims, License - sleep 1000 - ControlClick, Button3 - sleep 1000 - ControlClick, Button1 - sleep 1000 - break - } - sleep 1000 - } - winwait, Sims, Please enter the entire Registration Code - sleep 1000 - send {Raw}${W_KEY} - send {Enter} - winwait, - InstallShield Wizard, Setup Type - ControlClick &Complete ; was not defaulting to complete? - send {Enter} - winwait, - InstallShield Wizard, Click Install to begin - send {Enter} - winwait, - InstallShield Wizard, Would you like to install the latest - sleep 1000 - ControlClick, Button4 ; No thanks - sleep 1000 - ControlClick, Button1 - sleep 1000 - } - winwait, - InstallShield Wizard, Complete - if ( w_opt_unattended > 0 ) { - ControlClick Button1 ; Do not view readme - send {Enter} ; Finish - } - winwaitclose - " -} - -#---------------------------------------------------------------- - -w_metadata splitsecond games \ - title="Split Second" \ - publisher="Disney" \ - year="2010" \ - media="dvd" \ - file1="SplitSecond.iso" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Disney Interactive Studios/Split Second/SplitSecond.exe" - -load_splitsecond() -{ - # Key is used in first run activation, no need to read it here. - w_mount SplitSecond - - # Aborts with dialog about FirewallInstallHelper.dll if that's not on the path (e.g. in current dir) - w_try_cd "${W_ISO_MOUNT_ROOT}" - w_ahk_do " - SetTitleMatchMode, 2 - run setup.exe - winwait, Split, Language - sleep 500 - ControlClick, Next, Split, Language ; FIXME: Use button name - winwait, Split, game installation - sleep 500 - ControlClick, Button1, Split, game installation - winwait, Split, license - sleep 500 - ControlClick, Button5, Split, license - sleep 500 - ControlClick, Button2, Split, license - winwait, Split, DirectX - sleep 500 - ControlClick, Button5, Split, DirectX - sleep 500 - ControlClick, Button2, Split, DirectX - winwait, Split, installation method - sleep 500 - controlclick, Next, Split, installation method ; FIXME: Use button name - winwait, DirectX needs to be updated - sleep 500 - send {Enter} - winwait, Split, begin - sleep 500 - ControlClick, Button1 - winwait, Split, completed - sleep 500 - ControlClick, Button1, Split - sleep 500 - ControlClick, Button4, Split - " -} - -#---------------------------------------------------------------- - -w_metadata spore games \ - title="Spore" \ - publisher="EA" \ - year="2008" \ - media="dvd" \ - file1="SPORE.iso" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Electronic Arts/SPORE/Sporebin/SporeApp.exe" - -load_spore() -{ - w_mount SPORE - - w_read_key - - w_ahk_do " - SetTitleMatchMode, 2 - run, ${W_ISO_MOUNT_LETTER}:SPORESetup.exe - winwait, Language - if ( w_opt_unattended > 0 ) { - sleep 500 - controlclick, Button1 - winwait, SPORE, Welcome - sleep 500 - controlclick, Button1 - winwait, SPORE, License - sleep 500 - controlclick, Button3 - sleep 500 - controlclick, Button1 - winwait, SPORE, Registration Code - send {RAW}${W_KEY} - sleep 500 - controlclick, Button2 - winwait, SPORE, Setup Type - sleep 500 - controlclick, Button6 - winwait, SPORE, Shortcut - sleep 500 - controlclick, Button6 - winwait, SPORE, begin - sleep 500 - controlclick, Button1 - winwait, Question - ; download managers are usually a pain, so always say no to such questions - sleep 500 - controlclick, Button2 - } - winwait, SPORE, complete - sleep 500 - if ( w_opt_unattended > 0 ) { - controlclick, Button1 - sleep 500 - controlclick, Button2 - sleep 500 - controlclick, Button4 - } - winwaitclose, SPORE, complete - " -} - -#---------------------------------------------------------------- - -w_metadata spore_cc_demo games \ - title="Spore Creature Creator trial" \ - publisher="EA" \ - year="2008" \ - media="download" \ - file1="792248d6ad421d577132c2b648bbed45_scc_trial_na.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Electronic Arts/SPORE/Sporebin/SporeCreatureCreator.exe" - -load_spore_cc_demo() -{ - w_download http://akamai.cdn.ea.com/eamaster/u/f/eagames/spore/scc/promo/792248d6ad421d577132c2b648bbed45_scc_trial_na.exe a7fbc5ca02a49be9772b54caf3ab1a60bdda16e43e14051de407ace527bece15 - - w_info "The installer runs on for about a minute after it's done." - - w_try_cd "${W_CACHE}/${W_PACKAGE}" - if test "${W_OPT_UNATTENDED}"; then - w_ahk_do " - SetWinDelay 1000 - SetTitleMatchMode, 2 - run ${file1} - winwait, Wizard, Welcome to the SPORE - send N - winwait, Wizard, Please read the following - send a - send N - winwait, Wizard, your setup - send N - winwait, Wizard, options below - send N - winwait, Wizard, We're ready - ;send i ; didn't take once? - ControlClick, Button1 - winwait, Question, do not install the latest - send N ; reject EA Download Manager - winwait, Wizard, Launch - send {SPACE}{DOWN}{SPACE}{ENTER} - winwaitclose - " - while pgrep -f "${file1}" > /dev/null; do - w_info "Waiting for installer to finish." - sleep 2 - done - else - w_try "${WINE}" "${file1}" - fi -} - -#---------------------------------------------------------------- - -w_metadata starcraft2_demo games \ - title="Starcraft II Demo" \ - publisher="Blizzard" \ - year="2010" \ - media="manual_download" \ - file1="SC2-WingsOfLiberty-enUS-Demo-Installer.zip" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/StarCraft II Demo/StarCraft II.exe" - -load_starcraft2_demo() -{ - w_download_manual https://www.fileplanet.com/217982/210000/fileinfo/Starcraft-2-Demo SC2-WingsOfLiberty-enUS-Demo-Installer.zip 6ba192a726fc8b58031a7de961ad9392f60df05cfb206342f02f7a80b57c0784 - - w_try_cd "${W_TMP}" - w_try_unzip . "${W_CACHE}/${W_PACKAGE}"/SC2-WingsOfLiberty-enUS-Demo-Installer.zip - - w_ahk_do " - SetTitleMatchMode, 2 - Run, Installer.exe - WinWait, StarCraft II Installer - if ( w_opt_unattended > 0 ) { - sleep 500 - ControlClick, x300 y200 - winwait, End User License Agreement - winactivate - ;MouseMove, 300, 300 - ;Click WheelDown, 70 - Sleep, 1000 - ControlClick, Button2 ; Accept - winwaitclose - winwait, StarCraft II Installer - sleep 1000 - ControlClick, x800 y500 - ; Is there any better wait to await completion? - Loop { - PixelGetColor, color, 473, 469 ; the 1 in 100% - ; The digits are drawn white, but because the whole - ; window is flickering, it cycles through about 20 - ; brightnesses. Check a bunch of them to reduce - ; chances of getting stuck for a long time. - ifEqual, color, 0xffffff - break - ifEqual, color, 0xf4f4f4 - break - ifEqual, color, 0xf1f1f1 - break - ifEqual, color, 0xf0f0f0 - break - ifEqual, color, 0xeeeeee - break - ifEqual, color, 0xebebeb - break - ifEqual, color, 0xe4e4e4 - break - sleep 500 ; changes rapidly, so sample often - } - ControlClick, x800 y500 ; Finish - winwaitclose - ; no way to tell game to not start? - process, wait, SC2.exe - sleep 2000 - process, close, SC2.exe - } - " -} - -#---------------------------------------------------------------- - -w_metadata theundergarden_demo games \ - title="The UnderGarden Demo" \ - publisher="Atari" \ - year="2010" \ - media="manual_download" \ - file1="TheUnderGarden_PC_B34_SRTB.30_28OCT10.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/The UnderGarden/TheUndergarden.exe" - -load_theundergarden_demo() -{ - w_download_manual http://www.bigdownload.com/games/the-undergarden/pc/the-undergarden-demo TheUnderGarden_PC_B34_SRTB.30_28OCT10.exe acf90c422ac2f2f242100f39bedfe7df0c95f7a - - w_try_cd "${W_CACHE}/${W_PACKAGE}" - - w_ahk_do " - SetTitleMatchMode, 2 - Run, TheUnderGarden_PC_B34_SRTB.30_28OCT10.exe - WinWait,WinRAR - if ( w_opt_unattended > 0 ) { - Sleep 500 - ControlClick Button2 ; Install - WinWait,Select Setup Language, during - Sleep 500 - ControlClick TNewButton1 ;OK - WinWait,Setup - The UnderGarden, your - Sleep 500 - ControlClick TNewButton1 ;OK - WinWait,Setup - The UnderGarden, License - Sleep 500 - ControlClick TNewRadioButton1 ; accept - Sleep 500 - ControlClick TNewButton2 ; Next - WinWait,Setup - The UnderGarden, different - Sleep 500 - ControlClick TNewButton3 ;Next - WinWait,Setup - The UnderGarden, shortcuts - Sleep 500 - ControlClick TNewButton4 ;OK - WinWait,Setup - The UnderGarden, additional - Sleep 500 - ControlFocus,TNewCheckListBox1,desktop - Sleep 500 - Send {Space} - Sleep 500 - ControlClick TNewButton4 ; Next - WinWait,Setup - The UnderGarden, review - Sleep 500 - ControlClick TNewButton4 ;Install - WinWait,Microsoft Visual C, Visual - Sleep 500 - ControlClick Button13 ;Cancel - WinWait,Microsoft Visual C, want - Sleep 500 - ControlClick Button1 ;Yes - WinWait,Microsoft Visual C, chosen - Sleep 500 - ControlClick Button2 ;Finish - WinWait,Framework 3, Press - Sleep 500 - ControlClick Button21 ;Cancel - WinWait,Framework 3, want - Sleep 500 - ControlClick Button1 ;Yes - WinWait,Installing Microsoft, Runtime - Sleep 500 - ControlClick Button6 ;Cancel - } - WinWait,Setup,launched - if ( w_opt_unattended > 0 ) { - Sleep 500 - ControlClick TNewButton4 ;Finish - } - WinWaitClose,Setup,launched - " -} - -#---------------------------------------------------------------- - -w_metadata tmnationsforever games \ - title="TrackMania Nations Forever" \ - publisher="Nadeo" \ - year="2009" \ - media="download" \ - file1="tmnationsforever_setup.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/TmNationsForever/TmForever.exe" - -load_tmnationsforever() -{ - # 2011/03/29: 2f659138ed4409da404970841e18f03d29921beaf6a424824c8312ddb20f6355 - w_download "http://files.trackmaniaforever.com/tmnationsforever_setup.exe" 2f659138ed4409da404970841e18f03d29921beaf6a424824c8312ddb20f6355 - - w_try_cd "${W_CACHE}/${W_PACKAGE}" - - w_ahk_do " - SetTitleMatchMode, 2 - Run, tmnationsforever_setup.exe - WinWait,Select Setup Language - if ( w_opt_unattended > 0 ) { - Sleep 1000 - ControlClick TNewButton1 ; OK - WinWait,Setup - TmNationsForever,Welcome - Sleep 1000 - ControlClick TNewButton1 ; Next - WinWait,Setup - TmNationsForever,License - Sleep 1000 - ControlClick TNewRadioButton1 ; Accept - Sleep 1000 - ControlClick TNewButton2 ; Next - WinWait,Setup - TmNationsForever,Where - Sleep 1000 - ControlClick TNewButton3 ; Next - WinWait,Setup - TmNationsForever,shortcuts - Sleep 1000 - ControlClick TNewButton4 ; Next - WinWait,Setup - TmNationsForever,perform - Sleep 1000 - ControlClick TNewButton4 ; Next - WinWait,Setup - TmNationsForever,installing - Sleep 1000 - ControlClick TNewButton4 ; Install - } - WinWait,Setup - TmNationsForever,finished - if ( w_opt_unattended > 0 ) { - Sleep 1000 - ControlFocus, TNewCheckListBox1, TmNationsForever, finished - Sleep 1000 - Send {Space} ; don't start game - ControlClick TNewButton4 ; Finish - } - WinWaitClose - " -} - -#---------------------------------------------------------------- - -w_metadata trainztcc_2004 games \ - title="Trainz: The Complete Collection: TRS2004" \ - publisher="Paradox Interactive" \ - year="2008" \ - media="dvd" \ - file1="TRS2006DVD.iso" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Auran/TRS2004/TRS2004.exe" - -load_trainztcc_2004() -{ - w_call mfc42 - - w_read_key - # yup, they got the volume name wrong - w_mount TRS2006DVD - w_try_cd ${W_ISO_MOUNT_ROOT}/TRS2004_SP4_DVD_Installer_BUILD_2370/Installer/Disk1 - w_ahk_do " - SetTitleMatchMode, 2 - SetWinDelay 500 - run setup.exe - if ( w_opt_unattended > 0 ) { - winwait TRS2004 Setup, Please install the latest drivers - send {Enter} - winwait TRS2004, Welcome - send {Enter} - winwait TRS2004, License - ControlClick Button2 - winwait TRS2004, serial - winactivate - send ${W_RAW_KEY}{Enter} - winwait TRS2004, Destination - send {Enter} - winwait Install DirectX - send n - winwait Windows Update, Your computer already - send {Enter} - } - winwait TRS2004, Complete - if ( w_opt_unattended > 0 ) { - send {Space} ; uncheck View Readme - send {Enter} ; Finish - } - winwaitclose - " - - # And, while we're at it, also install the accompanying paint shed app - w_try_cd ${W_ISO_MOUNT_ROOT}/TRAINZ_PAINTSHED - w_ahk_do " - SetTitleMatchMode, 2 - SetWinDelay 500 - run Trainz_Paint_Shed_Setup.exe - if ( w_opt_unattended > 0 ) { - winwait Trainz Paint Shed, Welcome - send {Enter} - winwait Trainz Paint Shed, License - send a ; accept - send {Enter} ; Next - winwait Trainz Paint Shed, Destination - send {Enter} - winwait Trainz Paint Shed, Install - send {Enter} - } - winwait Trainz Paint Shed, Complete - if ( w_opt_unattended > 0 ) { - send {Enter} ; Finish - } - winwaitclose - " -} - -#---------------------------------------------------------------- - -w_metadata sammax301_demo games \ - title="Sam & Max 301: The Penal Zone" \ - publisher="Telltale Games" \ - year="2010" \ - media="manual_download" \ - file1="SamMax301_PC_Setup.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Telltale Games/Sam and Max - The Devil's Playhouse/The Penal Zone/SamMax301.exe" - -load_sammax301_demo() -{ - w_download_manual "https://www.fileplanet.com/211314/210000/fileinfo/Sam-&-Max:-Devil's-Playhouse---Episode-One-Demo" SamMax301_PC_Setup.exe bed2c16c0254881e7770743f936b8926fa202b91d281bb8c2dd34305d0c0a84a - - w_try_cd "${W_CACHE}/${W_PACKAGE}" - w_ahk_do " - SetTitleMatchMode, 2 - SetWinDelay 500 - run SamMax301_PC_Setup.exe - winwait Sam and Max The Penal Zone Setup, Welcome - if ( w_opt_unattended > 0 ) { - controlclick button2 ; Next - winwait Sam and Max The Penal Zone Setup, DirectX - controlclick button5 ; Uncheck check directx - controlclick button2 ; Next - winwait Sam and Max The Penal Zone Setup, License - controlclick button2 ; I Agree - winwait Sam and Max The Penal Zone Setup, Location - controlclick button2 ; Install - winwait Sam and Max The Penal Zone Setup, Finish - controlclick button4 ; Uncheck play now - controlclick button5 ; Uncheck create shortcut - controlclick button2 ; Finish - } - winwaitclose Sam and Max The Penal Zone Setup - " -} - -#---------------------------------------------------------------- - -w_metadata sammax304_demo games \ - title="Sam & Max 304: Beyond the Alley of the Dolls" \ - publisher="Telltale Games" \ - year="2010" \ - media="manual_download" \ - file1="SamMax304_PC_setup.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Telltale Games/Sam and Max - The Devil's Playhouse/Beyond the Alley of the Dolls/SamMax304.exe" - -load_sammax304_demo() -{ - w_download_manual "https://www.fileplanet.com/214770/210000/fileinfo/Sam-&-Max:-The-Devi's-Playhouse---Beyond-the-Alley-of-the-Dolls-Demo" SamMax304_PC_setup.exe 51c85e98857d15c59d9bb808ee16794cc0caf39799c50545bffdf359eac4c70a - - w_try_cd "${W_CACHE}/${W_PACKAGE}" - w_ahk_do " - SetTitleMatchMode, 2 - Run, ${file1} - WinWait,Sam and Max Beyond the Alley of the Dolls Setup - if ( w_opt_unattended > 0 ) { - ControlClick Button2 ; Next - WinWait,Sam and Max Beyond the Alley of the Dolls Setup,DirectX - ControlClick Button2 ; Next - Directx check defaulted - WinWait,Sam and Max Beyond the Alley of the Dolls Setup,License - ControlClick Button2 ; Agree - WinWait,Sam and Max Beyond the Alley of the Dolls Setup,Location - ControlClick Button2 ; Install - WinWait,Sam and Max Beyond the Alley of the Dolls Setup,Finish - ControlClick Button4 ; Uncheck Play Now - ControlClick Button2 ; Finish - } - WinWaitClose - " -} - -#---------------------------------------------------------------- - -w_metadata tropico3_demo games \ - title="Tropico 3 Demo" \ - publisher="Kalypso Media GmbH" \ - year="2009" \ - media="manual_download" \ - file1="Tropico3Demo.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Kalypso/Tropico 3 Demo/Tropico3 Demo.exe" - -load_tropico3_demo() -{ - w_download_manual https://www.fileplanet.com/204947/200000/fileinfo/Tropico-3-Demo Tropico3Demo.exe c4c06858cb1e0b9ff29dc8de6ecb8eb9cf699ce31609fbfa848d5dbc83c9d3e0 - - w_try_cd "${W_CACHE}/${W_PACKAGE}" - - w_ahk_do " - SetWinDelay 1000 - SetTitleMatchMode, 2 - Run, Tropico3Demo.exe - WinWait,Installer - if ( w_opt_unattended > 0 ) { - ControlClick Button1 ; OK - WinWait,Tropico,Welcome - ControlClick Button2 ; Next - WinWait,Tropico,License - ControlClick Button2 ; Agree - WinWait,Tropico,Typical - ControlClick Button2 ; Next - } - WinWait,Tropico,Completing - if ( w_opt_unattended > 0 ) { - ControlClick Button4 ; Uncheck Run Now - ControlClick Button2 ; Finish - } - WinWaitClose - " -} - -#---------------------------------------------------------------- - -w_metadata singularity games \ - title="Singularity" \ - publisher="Activision" \ - year="2010" \ - media="dvd" \ - file1="SNG_DVD.iso" - -load_singularity() -{ - w_read_key - w_mount SNG_DVD - - w_ahk_do " - run ${W_ISO_MOUNT_LETTER}:setup.exe - winwait, Activision(R) - InstallShield, Select the language for the installation from the choices below. - if ( w_opt_unattended > 0 ) { - sleep 1000 - controlclick, Button1, Activision(R) - InstallShield, Select the language for the installation from the choices below. - sleep 1000 - winwait, Singularity(TM), Keycode Check - sleep 1000 - Send ${W_KEY} - sleep 1000 - Send {Enter} - ; Well this is annoying... - Winwait, Keycode Check, The Keycode you entered appears to be valid. - sleep 1000 - Send {Enter} - winwait, Singularity(TM), The InstallShield Wizard will install Singularity(TM) on your computer - sleep 1000 - controlclick, Button1, Singularity(TM), The InstallShield Wizard will install Singularity(TM) on your computer - winwait, Singularity(TM), Please read the following license agreement carefully - sleep 1000 - controlclick, Button5, Singularity(TM), Please read the following license agreement carefully - sleep 1000 - controlclick, Button2, Singularity(TM), Please read the following license agreement carefully - winwait, Singularity(TM), Minimum System Requirements - sleep 1000 - controlclick, Button1, Singularity(TM), Minimum System Requirements - winwait, Singularity(TM), Select the setup type to install - controlclick, Button4, Singularity(TM), Select the setup type to install - } - ; Loop until installer window has been gone for at least two seconds - Loop - { - sleep 1000 - IfWinExist, Singularity - continue - IfWinExist, Activision - continue - sleep 1000 - IfWinExist, Singularity - continue - IfWinExist, Activision - continue - break - } - " - - # Clean up crap left over in c:\ when the installer runs the vc 2008 redistributable installer - w_try_cd "${W_DRIVE_C}" - rm -f VC_RED.* eula.*.txt globdata.ini install.exe install.ini install.res.*.dll vcredist.bmp -} - -#---------------------------------------------------------------- - -w_metadata torchlight games \ - title="Torchlight - boxed version" \ - publisher="Runic Games" \ - year="2009" \ - media="dvd" \ - file1="Torchlight.iso" - -load_torchlight() -{ - w_mount "Torchlight" - w_ahk_do " - SetTitleMatchMode, 2 - Run, ${W_ISO_MOUNT_LETTER}:Torchlight.exe - WinWait, Torchlight Setup, This wizard will guide - if ( w_opt_unattended > 0 ) { - sleep 1000 - ControlClick, Button2, Torchlight Setup, This wizard will guide - WinWait, Torchlight Setup, Please review the license terms - sleep 1000 - ControlClick, Button2, Torchlight Setup, Please review the license terms - WinWait, Torchlight Setup, Choose Install Location - sleep 1000 - ControlClick, Button2, Torchlight Setup, Choose Install Location - WinWait, Torchlight Setup, Installation Complete - sleep 1000 - ControlClick, Button2, Torchlight Setup, Installation Complete - WinWait, Torchlight Setup, Completing the Torchlight Setup Wizard - sleep 1000 - ControlClick, Button4, Torchlight Setup, Completing the Torchlight Setup Wizard - ControlClick, Button2, Torchlight Setup, Completing the Torchlight Setup Wizard - } - WinWaitClose, Torchlight Setup - " -} - -#---------------------------------------------------------------- - -w_metadata twfc games \ - title="Transformers: War for Cybertron" \ - publisher="Activision" \ - year="2010" \ - media="dvd" \ - file1="TWFC_DVD.iso" - -load_twfc() -{ - w_read_key - w_mount TWFC_DVD - - w_ahk_do " - run ${W_ISO_MOUNT_LETTER}:setup.exe - SetTitleMatchMode, 2 - winwait, Activision, Select the language for the installation - if ( w_opt_unattended > 0 ) { - sleep 1000 - controlclick, Button1, Activision, Select the language for the installation - winwait, Transformers, Press NEXT to verify your key - sleep 1000 - send ${W_KEY} - send {Enter} - winwait, Keycode Check, The Keycode you entered appears to be valid - sleep 1000 - send {Enter} - winwait, Transformers, The InstallShield Wizard will install Transformers - sleep 1000 - controlclick, Button1, Transformers, The InstallShield Wizard will install Transformers - winwait, Transformers, License Agreement - sleep 1000 - controlclick, Button5, Transformers, License Agreement - sleep 1000 - controlclick, Button2, Transformers, License Agreement - winwait, Transformers, Minimum System Requirements - sleep 1000 - controlclick, Button1, Transformers, Minimum System Requirements - winwait, Transformers, Select the setup type to install - sleep 1000 - controlclick, Button4, Transformers, Select the setup type to install - } - ; Installer exits silently. Prevent an early umount - Loop - { - sleep 1000 - IfWinExist, Transformers - continue - IfWinExist, Activision - continue - sleep 1000 - IfWinExist, Transformers - continue - IfWinExist, Activision - continue - break - } - " - - # Clean up crap left over in c:\ when the installer runs the vc 2008 redistributable installer - w_try_cd "${W_DRIVE_C}" - rm -f VC_RED.* eula.*.txt globdata.ini install.exe install.ini install.res.*.dll vcredist.bmp -} - -#---------------------------------------------------------------- - -w_metadata typingofthedead_demo games \ - title="Typing of the Dead Demo" \ - publisher="Sega" \ - year="1999" \ - media="manual_download" \ - file1="Tod_e_demo.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/SEGA/TOD-Demo/Tod_e_demo.exe" - -load_typingofthedead_demo() -{ - w_download_manual "https://www.fileplanet.com/54947/50000/fileinfo/The-Typing-of-the-Dead-Demo" tod-demo.zip feb0888b6cf1d51af2bf3d752e1727b5d248c2704ca053561f384b55e86267ea - w_try_cd "${W_TMP}" - w_try_unzip . "${W_CACHE}/${W_PACKAGE}/tod-demo.zip" - w_ahk_do " - SetTitleMatchMode, 2 - run SETUP.EXE - if ( w_opt_unattended > 0 ) { - WinWait,InstallShield Wizard,where - sleep 1000 - ControlClick Button1 ; Next - WinWait,InstallShield Wizard,icons - sleep 1000 - ControlClick Button2 ; Next - } - ; installer crashes here? - Sleep 20000 - " -} - -#---------------------------------------------------------------- - -w_metadata ut3 games \ - title="Unreal Tournament 3" \ - publisher="Midway Games" \ - year="2007" \ - media="dvd" \ - file1="UT3_RC7.iso" \ - file2="UT3Patch5.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/Unreal Tournament 3/Binaries/UT3.exe" - -load_ut3() -{ - w_download_manual "http://www.filefront.com/13709855/UT3Patch5.exe" UT3Patch5.exe - w_try w_mount UT3_RC7 - - w_ahk_do " - run ${W_ISO_MOUNT_LETTER}:SetupUT3.exe - SetTitleMatchMode, slow ; else can't see EULA text - SetTitleMatchMode, 2 - SetWinDelay 1000 - WinWait, Choose Setup Language - if ( w_opt_unattended > 0 ) { - ControlClick Button1 ; OK - WinWait, Unreal Tournament 3, GAMESPY ; License Agreement - ControlClick Button2 ; Yes - WinWait, Unreal Tournament 3, UnrealEd ; License Agreement - ControlClick Button2 ; Yes - WinWait, , Choose Destination - ControlClick Button1 ; Next - WinWait, AGEIA PhysX v7.09.13 Setup, License - ControlClick Button3 ; Accept - sleep 1000 - ControlClick Button4 ; Next - WinWait, AGEIA PhysX v7.09.13, Finish - ControlClick Button1 ; Finish - ; game now begins installing - } - WinWait, , InstallShield Wizard Complete - if ( w_opt_unattended > 0 ) { - ControlClick Button4 ; Finish - } - WinWaitClose - " - - w_try_cd "${W_CACHE}/${W_PACKAGE}" - - w_ahk_do " - SetTitleMatchMode, 2 - run UT3Patch5.exe - WinWait, License - if ( w_opt_unattended > 0 ) { - ControlClick Button1 ; Accept - WinWait, End User License Agreement - ControlClick Button1 ; Accept - WinWait, Patch UT3 - ControlClick Button1 ; Yes - } - WinWait, , UT3 was successfully patched! - if ( w_opt_unattended > 0 ) { - ControlClick Button1 ; OK - } - WinWaitClose - " -} - -#---------------------------------------------------------------- - -w_metadata wog games \ - title="World of Goo Demo" \ - publisher="2D Boy" \ - year="2008" \ - media="download" \ - file1="WorldOfGooDemo.1.0.exe" \ - installed_exe1="${W_PROGRAMS_X86_WIN}/WorldOfGooDemo/WorldOfGoo.exe" - -load_wog() -{ - if ! test -f "${W_CACHE}/wog/WorldOfGooDemo.1.0.exe"; then - # Get temporary download location - w_download "https://www.worldofgoo.com/dl2.php?lk=demo&filename=WorldOfGooDemo.1.0.exe" - URL=$(grep WorldOfGooDemo.1.0.exe "${W_CACHE}/wog/dl2.php?lk=demo&filename=WorldOfGooDemo.1.0.exe" \ - | sed 's,.*http,http,;s,".*,,') - w_try rm "${W_CACHE}/wog/dl2.php?lk=demo&filename=WorldOfGooDemo.1.0.exe" - - w_download "${URL}" 07892e927e0c403a178717b67928d3b4126dd0ed4f82afa20a4bd2496706c5e9 - fi - - w_try_cd "${W_CACHE}/${W_PACKAGE}" - w_ahk_do " - SetWinDelay 500 - run WorldOfGooDemo.1.0.exe - winwait, World of Goo Setup, License Agreement - if ( w_opt_unattended > 0 ) { - sleep 1000 - WinActivate - send {Enter} - winwait, World of Goo Setup, Choose Components - send {Enter} - winwait, World of Goo Setup, Choose Install Location - send {Enter} - winwait, World of Goo Setup, Thank you - ControlClick, Make me dirty right now, World of Goo Setup, Thank you - send {Enter} - } - winwaitclose, World of Goo Setup - " -} - -# Chinese apps addition -#---------------------------------------------------------------- - -w_metadata 163mail apps\ - title="163 MailMaster(网易邮箱大师)" \ - publisher="NetEase" \ - year="2017" \ - media="download" \ - file1="mail.exe" \ - installed_exe1="$W_PROGRAMS_X86_WIN/MailMaster/Start.exe" \ - homepage="http://mail.163.com/dashi/?from=mail46" \ - unattended="no" - -load_163mail() -{ -w_download http://client.dl.126.net/pcmail/dashi/mail.exe bf4f06945c3762cca1cd795da9be9893d9d57f7f8714e225ca2cf10ae9c33072 - - # uses vcrun2005 - w_call vcrun2005 - - w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" "$file1" - w_declare_exe "$W_PROGRAMS_X86_WIN\\MailMaster" "Start.exe" -} - -#---------------------------------------------------------------- - -w_metadata 163music apps\ - title="NetEase Cloud Music" \ - publisher="NetEase" \ - year="2023" \ - media="download" \ - file1="cloudmusicsetup2.9.9.199909.exe" \ - installed_exe1="$W_PROGRAMS_X86_WIN/Netease/CloudMusic/cloudmusic.exe" \ - homepage="http://music.163.com/" \ - unattended="no" - -load_163music() -{ -w_download https://d1.music.126.net/dmusic/cloudmusicsetup2.9.9.199909.exe dfa07efeb984fe10dc2527461a4ea34121f3d8b42b5cda6ee61beabec12e9e2e - - if w_workaround_wine_bug 38028 "Installing native directx9 to work around playback bug"; then - w_call d3dx9 - fi - - # Make sure chinese fonts are available - w_call fakechinese - - w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" "$file1" - w_declare_exe "$W_PROGRAMS_X86_WIN\\Netease\CloudMusic" "cloudmusic.exe" -} - -#---------------------------------------------------------------- - -w_metadata aliww apps\ - title="AliWangWang(阿里旺旺)" \ - publisher="Taobao.com" \ - year="2023" \ - media="download" \ - file1="AliIM_taobao_(10.01.03C).exe" \ - installed_exe1="$W_PROGRAMS_X86_WIN/AliWangWang/AliIM.exe" \ - homepage="https://wangwang.taobao.com/" \ - unattended="no" - -load_aliww() -{ -w_download "https://download.alicdn.com/wangwang/AliIM_taobao_(10.01.03C).exe" 207bdc210d7cdf2efa302f326f018d097d81e863f224f3c5846c175e2558fe9d - - # Make sure chinese fonts are available - w_call fakechinese - - echo "Setting aliim handler to xdg-open." - ################################## - cat > $HOME/.local/share/applications/wine-extension-aliim.desktop <<_EOF_ -[Desktop Entry] -Type=Application -Name=AliWangWang -MimeType=x-scheme-handler/aliim; -NoDisplay=true -StartupNotify=true -Icon=A767_AliIM.0 -_EOF_ - echo Exec=env WINEPREFIX=$WINEPREFIX $WINE \"$W_PROGRAMS_X86_WIN\\AliWangWang\\10.01.03C\\wwcmd.exe\" %u >> $HOME/.local/share/applications/wine-extension-aliim.desktop - xdg-mime default wine-extension-aliim.desktop x-scheme-handler/aliim - ################################### - - # Make sure chinese fonts are available - w_call fakechinese - - # Disable auto update - mkdir -p $WINEPREFIX/drive_c/Program\ Files/AliWangWang/10.01.03C/update - chmod 000 $WINEPREFIX/drive_c/Program\ Files/AliWangWang/10.01.03C/update - - w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" "$file1" - w_declare_exe "$W_PROGRAMS_X86_WIN\\AliWangWang" "AliIM.exe" -} - -#---------------------------------------------------------------- - -w_metadata evernote apps \ - title="Evernote" \ - publisher="Evernote Corporation" \ - year="2017" \ - media="download" \ - file1="Evernote_6.5.4.5512.exe" \ - installed_exe1="$W_PROGRAMS_X86_WIN/Evernote/Evernote/Evernote.exe" \ - homepage="http://www.evernote.com" \ - unattended="no" - -load_evernote() -{ - w_download https://cdn1.evernote.com/win6/public/Evernote_6.6.4.5512.exe d909f785b407cbd57ed2b04ab8e95d6f993d54432a1303f6792f4e296da11b31 - - if w_workaround_wine_bug xxx "workaround can not edit bug"; then - w_call wininet - fi - - # Make sure chinese fonts are available - w_call fakechinese - - w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" "$file1" - w_declare_exe "$W_PROGRAMS_X86_WIN\\Evernote\Evernote" Evernote.exe + w_try_cd "$W_CACHE/$W_PACKAGE" + w_try "$WINE" "$file1" + w_declare_exe "$W_PROGRAMS_X86_WIN\\Evernote\Evernote" Evernote.exe } #---------------------------------------------------------------- @@ -22111,7 +18577,7 @@ load_qqeim() #---------------------------------------------------------------- -w_metadata QQGame games\ +w_metadata QQGame apps\ title="QQGame2020" \ publisher="Tencent" \ year="2020" \ @@ -22351,12 +18817,15 @@ w_download http://download.ydstatic.com/notewebsite/downloads/YNote.exe 5bd9ab33 # DirectInput settings w_metadata mwo=force settings \ + title_bg="Задайте принудително DirectInput MouseWarpOverride (необходимо за някои игри)" \ title_uk="Встановити примусове DirectInput MouseWarpOverride (необхідно для деяких ігор)" \ title="Set DirectInput MouseWarpOverride to force (needed by some games)" w_metadata mwo=enabled settings \ + title_bg="Включете DirectInput MouseWarpOverride (по подразбиране)" \ title_uk="Увімкнути DirectInput MouseWarpOverride (за замовчуванням)" \ title="Set DirectInput MouseWarpOverride to enabled (default)" w_metadata mwo=disable settings \ + title_bg="Изключете DirectInput MouseWarpOverride" \ title_uk="Вимкнути DirectInput MouseWarpOverride" \ title="Set DirectInput MouseWarpOverride to disable" @@ -22386,6 +18855,7 @@ _EOF_ #---------------------------------------------------------------- w_metadata fontfix settings \ + title_bg="Проверете за неработещи шрифтове" \ title_uk="Перевірка шрифтів" \ title="Check for broken fonts" @@ -22408,15 +18878,19 @@ load_fontfix() #---------------------------------------------------------------- w_metadata fontsmooth=disable settings \ + title_bg="Изключете изглаждането на шрифта" \ title_uk="Вимкнути згладжування шрифту" \ title="Disable font smoothing" w_metadata fontsmooth=bgr settings \ + title_bg="Включете подпикселното изглаждане на шрифта за BGR LCD монитори" \ title_uk="Увімкнути субпіксельне згладжування шрифту для BGR LCD моніторів" \ title="Enable subpixel font smoothing for BGR LCDs" w_metadata fontsmooth=rgb settings \ + title_bg="Включете подпикселното изглаждане на шрифта за RGB LCD монитори" \ title_uk="Увімкнути субпіксельне згладжування шрифту для RGB LCD моніторів" \ title="Enable subpixel font smoothing for RGB LCDs" w_metadata fontsmooth=gray settings \ + title_bg="Включете подпикселното изглаждане на шрифта" \ title_uk="Увімкнути субпіксельне згладжування шрифту" \ title="Enable subpixel font smoothing" @@ -22449,9 +18923,11 @@ _EOF_ # Mac Driver settings w_metadata macdriver=mac settings \ + title_bg="Включете драйвера на Mac - Quartz (по подразбиране)" \ title_uk="Увімкнути рідний Mac Quartz драйвер (за замовчуванням)" \ title="Enable the Mac native Quartz driver (default)" w_metadata macdriver=x11 settings \ + title_bg="Изключете драйвера на Mac - Quartz и включете драйвера на X11" \ title_uk="Вимкнути рідний Mac Quartz драйвер та використовувати замість нього X11" \ title="Disable the Mac native Quartz driver, use X11 instead" @@ -22471,10 +18947,13 @@ _EOF_ #---------------------------------------------------------------- w_metadata mackeyremap=both settings \ + title_bg="Включете преназначаването на клавишите Opt->Alt и Cmd->Ctrl за драйвера на Mac" \ title="Enable mapping opt->alt and cmd->ctrl keys for the Mac native driver" w_metadata mackeyremap=left settings \ + title_bg="Включете преназначаването на левите клавиши Opt->Alt и Cmd->Ctrl за драйвера на Mac" \ title="Enable mapping of left opt->alt and cmd->ctrl keys for the Mac native driver" w_metadata mackeyremap=none settings \ + title_bg="Не преназначавайте клавишите за драйвера на Mac (по подразбиране)" \ title="Do not remap keys for the Mac native driver (default)" load_mackeyremap() @@ -22506,9 +18985,11 @@ _EOF_ # X11 Driver settings w_metadata grabfullscreen=y settings \ + title_bg="Задайте принудително прихващане на курсора за прозорци на цял екран (необходимо за някои игри)" \ title_uk="Примусове захоплення курсору для повноекранних вікон (необхідно для деяких ігор)" \ title="Force cursor clipping for full-screen windows (needed by some games)" w_metadata grabfullscreen=n settings \ + title_bg="Изключете прихващането на курсора за прозорци на цял екран (по подразбиране)" \ title_uk="Вимкнути примусове захоплення курсору для повноекранних вікон (за замовчуванням)" \ title="Disable cursor clipping for full-screen windows (default)" @@ -22531,21 +19012,25 @@ _EOF_ } w_metadata windowmanagerdecorated=y settings \ + title_bg="Позволете на мениджъра на прозорците да декорира прозорците (по подразбиране)" \ title_uk="Дозволити менеджеру вікон декорувати вікна (за замовчуванням)" \ title="Allow the window manager to decorate windows (default)" w_metadata windowmanagerdecorated=n settings \ + title_bg="Не позволявайте на мениджъра на прозорците да декорира прозорците" \ title_uk="Не дозволяти менеджеру вікон декорувати вікна" \ title="Prevent the window manager from decorating windows" #---------------------------------------------------------------- w_metadata usetakefocus=y settings \ + title_bg="Включете UseTakeFocus" \ title_cz="Aktivovat UseTakeFocus" \ title_uk="Увімкнути фокусування на вікні" \ title_sk="Aktivovať UseTakeFocus" \ title_tlh="Qorwagh buSchoH \'e\' chu\'" \ title="Enable UseTakeFocus" w_metadata usetakefocus=n settings \ + title_bg="Изключете UseTakeFocus (по подразбиране)" \ title_cz="Deaktivovat UseTakeFocus (výchozí)" \ title_uk="Вимкнути фокусування на вікні (за замовчуванням)" \ title_sk="Deaktivovať UseTakeFocus (výchozí)" \ @@ -22592,9 +19077,11 @@ _EOF_ } w_metadata windowmanagermanaged=y settings \ + title_bg="Позволете на мениджъра на прозорците да управлява прозорците (по подразбиране)" \ title_uk="Дозволити менеджеру вікон керування вікнами (за замовчуванням)" \ title="Allow the window manager to control windows (default)" w_metadata windowmanagermanaged=n settings \ + title_bg="Не позволявайте на мениджъра на прозорците да управлява прозорците" \ title_uk="Не дозволяти менеджеру вікон керування вікнами" \ title="Prevent the window manager from controlling windows" @@ -22621,21 +19108,27 @@ _EOF_ #---------------------------------------------------------------- w_metadata vd=off settings \ + title_bg="Изключете виртуалния работен плот" \ title_uk="Вимкнути віртуальний робочий стіл" \ title="Disable virtual desktop" w_metadata vd=640x480 settings \ + title_bg="Включете виртуалния работен плот с разделителна способност 640x480" \ title_uk="Увімкнути віртуальний робочий стіл та встановити розмір 640x480" \ title="Enable virtual desktop, set size to 640x480" w_metadata vd=800x600 settings \ + title_bg="Включете виртуалния работен плот с разделителна способност 800x600" \ title_uk="Увімкнути віртуальний робочий стіл та встановити розмір 800x600" \ title="Enable virtual desktop, set size to 800x600" w_metadata vd=1024x768 settings \ + title_bg="Включете виртуалния работен плот с разделителна способност 1024x768" \ title_uk="Увімкнути віртуальний робочий стіл та встановити розмір 1024x768" \ title="Enable virtual desktop, set size to 1024x768" w_metadata vd=1280x1024 settings \ + title_bg="Включете виртуалния работен плот с разделителна способност 1280x1024" \ title_uk="Увімкнути віртуальний робочий стіл та встановити розмір 1280x1024" \ title="Enable virtual desktop, set size to 1280x1024" w_metadata vd=1440x900 settings \ + title_bg="Включете виртуалния работен плот с разделителна способност 1440x900" \ title_uk="Увімкнути віртуальний робочий стіл та встановити розмір 1440x900" \ title="Enable virtual desktop, set size to 1440x900" @@ -22669,15 +19162,20 @@ _EOF_ w_die "you want a virtual desktop of ${size}? I don't understand." ;; esac + w_try_regedit "${W_TMP_WIN}"/vd.reg + + w_wineserver -w } #---------------------------------------------------------------- # MIME-type file associations settings w_metadata mimeassoc=on settings \ + title_bg="Включете експортирането на файловите асоциации от MIME към работния плот (по подразбиране)" \ title="Enable exporting MIME-type file associations to the native desktop (default)" w_metadata mimeassoc=off settings \ + title_bg="Изключете експортирането на файловите асоциации от MIME към работния плот" \ title="Disable exporting MIME-type file associations to the native desktop" load_mimeassoc() @@ -22733,9 +19231,11 @@ _EOF_ # CheckFloatConstants settings w_metadata cfc=enabled settings \ + title_bg="Включете CheckFloatConstants" \ title_uk="Увімкнути CheckFloatConstants" \ title="Enable CheckFloatConstants" w_metadata cfc=disabled settings \ + title_bg="Изключете CheckFloatConstants (по подразбиране)" \ title_uk="Вимкнути CheckFloatConstants (за замовчуванням)" \ title="Disable CheckFloatConstants (default)" @@ -22747,12 +19247,15 @@ load_cfc() # CSMT settings w_metadata csmt=force settings \ + title_bg="Включете принудително сериализацията на командите от OpenGL или Vulkan между няколко командни потока в приложението" \ title_uk="Увімкнути та примусити серіалізацію команд OpenGL або Vulkan між кількома потоками команд в одній програмі" \ title="Enable and force serialisation of OpenGL or Vulkan commands between multiple command streams in the same application" w_metadata csmt=on settings \ + title_bg="Включете Command Stream Multithreading (по подразбиране)" \ title_uk="Увімкнути Command Stream Multithreading (за замовчуванням)" \ title="Enable Command Stream Multithreading (default)" w_metadata csmt=off settings \ + title_bg="Изключете Command Stream Multithreading"\ title_uk="Вимкнути Command Stream Multithreading"\ title="Disable Command Stream Multithreading" @@ -22780,15 +19283,19 @@ _EOF_ # DirectDraw settings w_metadata gsm=0 settings \ + title_bg="Задайте MaxShaderModelGS на 0" \ title_uk="Встановити MaxShaderModelGS на 0" \ title="Set MaxShaderModelGS to 0" w_metadata gsm=1 settings \ + title_bg="Задайте MaxShaderModelGS на 1" \ title_uk="Встановити MaxShaderModelGS на 1" \ title="Set MaxShaderModelGS to 1" w_metadata gsm=2 settings \ + title_bg="Задайте MaxShaderModelGS на 2" \ title_uk="Встановити MaxShaderModelGS на 2" \ title="Set MaxShaderModelGS to 2" w_metadata gsm=3 settings \ + title_bg="Задайте MaxShaderModelGS на 3" \ title_uk="Встановити MaxShaderModelGS на 3" \ title="Set MaxShaderModelGS to 3" @@ -22800,6 +19307,7 @@ load_gsm() #---------------------------------------------------------------- w_metadata npm=repack settings \ + title_bg="Задайте NonPower2Mode на repack" \ title_uk="Встановити NonPower2Mode на repack" \ title="Set NonPower2Mode to repack" @@ -22811,9 +19319,11 @@ load_npm() #---------------------------------------------------------------- w_metadata orm=fbo settings \ + title_bg="Задайте OffscreenRenderingMode=fbo (по подразбиране)" \ title_uk="Встановити OffscreenRenderingMode=fbo (за замовчуванням)" \ title="Set OffscreenRenderingMode=fbo (default)" w_metadata orm=backbuffer settings \ + title_bg="Задайте OffscreenRenderingMode=backbuffer" \ title_uk="Встановити OffscreenRenderingMode=backbuffer" \ title="Set OffscreenRenderingMode=backbuffer" @@ -22825,15 +19335,19 @@ load_orm() #---------------------------------------------------------------- w_metadata psm=0 settings \ + title_bg="Задайте MaxShaderModelPS на 0" \ title_uk="Встановити MaxShaderModelPS на 0" \ title="Set MaxShaderModelPS to 0" w_metadata psm=1 settings \ + title_bg="Задайте MaxShaderModelPS на 1" \ title_uk="Встановити MaxShaderModelPS на 1" \ title="Set MaxShaderModelPS to 1" w_metadata psm=2 settings \ + title_bg="Задайте MaxShaderModelPS на 2" \ title_uk="Встановити MaxShaderModelPS на 2" \ title="Set MaxShaderModelPS to 2" w_metadata psm=3 settings \ + title_bg="Задайте MaxShaderModelPS на 3" \ title_uk="Встановити MaxShaderModelPS на 3" \ title="Set MaxShaderModelPS to 3" @@ -22845,12 +19359,15 @@ load_psm() #---------------------------------------------------------------- w_metadata shader_backend=glsl settings \ + title_bg="Задайте shader_backend на glsl" \ title_uk="Встановити shader_backend на glsl" \ title="Set shader_backend to glsl" w_metadata shader_backend=arb settings \ + title_bg="Задайте shader_backend на arb" \ title_uk="Встановити shader_backend на arb" \ title="Set shader_backend to arb" w_metadata shader_backend=none settings \ + title_bg="Задайте shader_backend на none" \ title_uk="Встановити shader_backend на none" \ title="Set shader_backend to none" @@ -22862,9 +19379,11 @@ load_shader_backend() #---------------------------------------------------------------- w_metadata ssm=disabled settings \ + title_bg="Изключете Struct Shader Math (по подразбиране)" \ title_uk="Вимкнути Struct Shader Math (за замовчуванням)" \ title="Disable Struct Shader Math (default)" w_metadata ssm=enabled settings \ + title_bg="Включете Struct Shader Math"\ title_uk="Увімкнути Struct Shader Math"\ title="Enable Struct Shader Math" @@ -22890,15 +19409,19 @@ _EOF_ #---------------------------------------------------------------- w_metadata renderer=gdi settings \ + title_bg="Задайте renderer на gdi" \ title_uk="Встановити renderer на gdi" \ title="Set renderer to gdi" w_metadata renderer=gl settings \ + title_bg="Задайте renderer на gl" \ title_uk="Встановити renderer на gl" \ title="Set renderer to gl" w_metadata renderer=no3d settings \ + title_bg="Задайте renderer на no3d" \ title_uk="Встановити renderer на no3d" \ title="Set renderer to no3d" w_metadata renderer=vulkan settings \ + title_bg="Задайте renderer на vulkan" \ title_uk="Встановити renderer на vulkan" \ title="Set renderer to vulkan" @@ -22910,21 +19433,27 @@ load_renderer() #----------------------------------------------------------------= w_metadata rtlm=auto settings \ + title_bg="Задайте RenderTargetLockMode на auto (по подразбиране)" \ title_uk="Встановити RenderTargetLockMode на авто (за замовчуванням)" \ title="Set RenderTargetLockMode to auto (default)" w_metadata rtlm=disabled settings \ + title_bg="Задайте RenderTargetLockMode на disabled" \ title_uk="Вимкнути RenderTargetLockMode" \ title="Set RenderTargetLockMode to disabled" w_metadata rtlm=readdraw settings \ + title_bg="Задайте RenderTargetLockMode на readdraw" \ title_uk="Встановити RenderTargetLockMode на readdraw" \ title="Set RenderTargetLockMode to readdraw" w_metadata rtlm=readtex settings \ + title_bg="Задайте RenderTargetLockMode на readtex" \ title_uk="Встановити RenderTargetLockMode на readtex" \ title="Set RenderTargetLockMode to readtex" w_metadata rtlm=texdraw settings \ + title_bg="Задайте RenderTargetLockMode на texdraw" \ title_uk="Встановити RenderTargetLockMode на texdraw" \ title="Set RenderTargetLockMode to texdraw" w_metadata rtlm=textex settings \ + title_bg="Задайте RenderTargetLockMode на textex" \ title_uk="Встановити RenderTargetLockMode на textex" \ title="Set RenderTargetLockMode to textex" @@ -22936,6 +19465,7 @@ load_rtlm() #---------------------------------------------------------------- w_metadata set_mididevice settings \ + title_bg="Задайте устройството MIDImap към стойността, посочена в променливата на средата MIDI_DEVICE" \ title="Set MIDImap device to the value specified in the MIDI_DEVICE environment variable" load_set_mididevice() @@ -22958,15 +19488,19 @@ _EOF_ #---------------------------------------------------------------- w_metadata videomemorysize=default settings \ + title_bg="Оставете на Wine да открие паметта на видеокартата" \ title_uk="Дати можливість Wine визначити розмір відеопам'яті" \ title="Let Wine detect amount of video card memory" w_metadata videomemorysize=512 settings \ + title_bg="Кажете на Wine, че видеокартата има 512 МБ памет" \ title_uk="Повідомити Wine про 512МБ відеопам'яті" \ title="Tell Wine your video card has 512MB RAM" w_metadata videomemorysize=1024 settings \ + title_bg="Кажете на Wine, че видеокартата има 1024 МБ памет" \ title_uk="Повідомити Wine про 1024МБ відеопам'яті" \ title="Tell Wine your video card has 1024MB RAM" w_metadata videomemorysize=2048 settings \ + title_bg="Кажете на Wine, че видеокартата има 2048 МБ памет" \ title_uk="Повідомити Wine про 2048МБ відеопам'яті" \ title="Tell Wine your video card has 2048MB RAM" @@ -23002,15 +19536,19 @@ _EOF_ #---------------------------------------------------------------- w_metadata vsm=0 settings \ + title_bg="Задайте MaxShaderModelVS на 0" \ title_uk="Встановити MaxShaderModelVS на 0" \ title="Set MaxShaderModelVS to 0" w_metadata vsm=1 settings \ + title_bg="Задайте MaxShaderModelVS на 1" \ title_uk="Встановити MaxShaderModelVS на 1" \ title="Set MaxShaderModelVS to 1" w_metadata vsm=2 settings \ + title_bg="Задайте MaxShaderModelVS на 2" \ title_uk="Встановити MaxShaderModelVS на 2" \ title="Set MaxShaderModelVS to 2" w_metadata vsm=3 settings \ + title_bg="Задайте MaxShaderModelVS на 3" \ title_uk="Встановити MaxShaderModelVS на 3" \ title="Set MaxShaderModelVS to 3" @@ -23025,8 +19563,10 @@ load_vsm() #---------------------------------------------------------------- w_metadata autostart_winedbg=enabled settings \ + title_bg="Стартирайте автоматично winedbg при възникване на необработено изключение (по подразбиране)" \ title="Automatically launch winedbg when an unhandled exception occurs (default)" w_metadata autostart_winedbg=disabled settings \ + title_bg="Не позволявайте стартирането на winedbg при възникване на необработено изключение" \ title="Prevent winedbg from launching when an unhandled exception occurs" load_autostart_winedbg() @@ -23055,6 +19595,7 @@ _EOF_ #---------------------------------------------------------------- w_metadata heapcheck settings \ + title_bg="Включете кумулативната проверка с GlobalFlag" \ title_uk="Увімкнути накопичувальну перевірку GlobalFlag" \ title="Enable heap checking with GlobalFlag" @@ -23073,6 +19614,7 @@ _EOF_ #---------------------------------------------------------------- w_metadata nocrashdialog settings \ + title_bg="Изключете диалоговия прозорец за срив" \ title_uk="Вимкнути діалог про помилку" \ title="Disable crash dialog" @@ -23091,6 +19633,7 @@ _EOF_ } w_metadata set_userpath settings \ + title_bg="задайте потребителската променлива PATH в папката, посочена от местоположенията в променливата на средата WINEPATH с разделител ';'" \ title_uk="" \ title="set user PATH variable in wine prefix specified by native and/or wine paths in WINEPATH environment variable with ';' as path separator" @@ -23112,9 +19655,11 @@ _EOF_ # settings->misc w_metadata alldlls=default settings \ + title_bg="Премахнете всички замени на DLL файловете" \ title_uk="Видалити всі перевизначення DLL" \ title="Remove all DLL overrides" w_metadata alldlls=builtin settings \ + title_bg="Заменете DLL файловете" \ title_uk="Перевизначити найбільш поширені DLL на вбудовані" \ title="Override most common DLLs to builtin" @@ -23129,6 +19674,7 @@ load_alldlls() #---------------------------------------------------------------- w_metadata bad settings \ + title_bg="Фалшив глагол, който винаги връща false" \ title="Fake verb that always returns false" load_bad() @@ -23139,6 +19685,7 @@ load_bad() #---------------------------------------------------------------- w_metadata forcemono settings \ + title_bg="Задайте принудително Mono вместо .NET (за отстраняване на грешки)" \ title_uk="Примусове використання mono замість .NET (для налагодження)" \ title="Force using Mono instead of .NET (for debugging)" @@ -23151,6 +19698,7 @@ load_forcemono() #---------------------------------------------------------------- w_metadata good settings \ + title_bg="Фалшив глагол, който винаги връща true" \ title="Fake verb that always returns true" load_good() @@ -23161,8 +19709,10 @@ load_good() #---------------------------------------------------------------- w_metadata hidewineexports=enable settings \ + title_bg="Включете скриване на експортирането на Wine от приложенията (wine-staging)" \ title="Enable hiding Wine exports from applications (wine-staging)" w_metadata hidewineexports=disable settings \ + title_bg="Изключете скриване на експортирането на Wine от приложенията (wine-staging)" \ title="Disable hiding Wine exports from applications (wine-staging)" load_hidewineexports() @@ -23197,6 +19747,7 @@ _EOF_ #---------------------------------------------------------------- w_metadata hosts settings \ + title_bg="Добавете празни файлове в C:\\windows\\system32\\drivers\\etc\\{hosts,services}" \ title_uk="Додати порожні файли у C:\\windows\\system32\\drivers\\etc\\{hosts,services}" \ title="Add empty C:\\windows\\system32\\drivers\\etc\\{hosts,services} files" @@ -23210,7 +19761,7 @@ load_hosts() # See https://bugs.winehq.org/show_bug.cgi?id=12076 # It's in system32 for both win32/win64 - mkdir -p "${W_WINDIR_UNIX}"/system32/drivers/etc + w_try_mkdir "${W_WINDIR_UNIX}"/system32/drivers/etc touch "${W_WINDIR_UNIX}"/system32/drivers/etc/hosts touch "${W_WINDIR_UNIX}"/system32/drivers/etc/services } @@ -23218,6 +19769,7 @@ load_hosts() #---------------------------------------------------------------- w_metadata isolate_home settings \ + title_bg="Премахнете връзките на папката към \$HOME" \ title_uk="Видалити посилання на вино преміум на \$HOME" \ title="Remove wineprefix links to \$HOME" @@ -23235,7 +19787,7 @@ load_isolate_home() elif echo "${_W_target}" | grep -q "^${HOME}"; then echo "removing directory symlink ${_W_symlink} -> ${_W_target} ..." w_try rm -f "${_W_symlink}" - w_try mkdir -p "${_W_symlink}" + w_try_mkdir "${_W_symlink}" else echo "leaving data directory symlink not pointing to \$HOME: ${_W_symlink} -> ${_W_target}" fi @@ -23250,6 +19802,7 @@ load_isolate_home() #---------------------------------------------------------------- w_metadata native_mdac settings \ + title_bg="Заменете odbc32, odbccp32 и oledb32" \ title_uk="Перевизначити odbc32, odbccp32 та oledb32" \ title="Override odbc32, odbccp32 and oledb32" @@ -23257,11 +19810,7 @@ load_native_mdac() { # Set those overrides globally so user programs get MDAC's ODBC # instead of Wine's unixodbc - - # https://github.com/Winetricks/winetricks/issues/1447 - if w_wine_version_in 4.22, ; then - w_override_dlls native,builtin msado15 - fi + w_override_dlls native,builtin msado15 # For a while, this wasn't set (i.e., it was set to `builtin`, not `native,builtin`) # See: @@ -23286,6 +19835,7 @@ load_native_mdac() #---------------------------------------------------------------- w_metadata native_oleaut32 settings \ + title_bg="Заменете oleaut32" \ title_uk="Перевизначити oleaut32" \ title="Override oleaut32" @@ -23297,6 +19847,7 @@ load_native_oleaut32() #---------------------------------------------------------------- w_metadata remove_mono settings \ + title_bg="Премахнете wine-mono" \ title_uk="Видалити вбудоване wine-mono" \ title="Remove builtin wine-mono" @@ -23307,25 +19858,33 @@ load_remove_mono() # extracted to /usr/share/wine/mono, or equivalent), only 'Wine Mono Windows Support' will be installed. # If using the old .msi installer, *both* tarballs are installed. # - # So, we uninstall anything that has 'Wine Mono' in the name to handle both cases. - # If wine uninstaller can't find the application it will return 0 anyway. - mono_uuid="$("${WINE_ARCH}" uninstaller --list | grep 'Wine Mono' | cut -f1 -d\|)" - if test "${mono_uuid}"; then - for uuid in ${mono_uuid}; do - "${WINE_ARCH}" uninstaller --remove "${uuid}" + # Sometime later, the installer name was updated to 'Wine Mono Runtime' + # + # And then in 8.22, uninstaller now returns an error rather than 0 if an uninstaller can't be found + # That can be avoided with the --silent option, but that option doesn't exist in older versions. + # + # So, now, loop through and try to uninstaller them one at a time. + + mono_install_found=0 + for mono_installer_desc in 'Wine Mono Windows Support' 'Wine Mono Runtime' 'Wine Mono'; do + mono_uuid="$(WINEDEBUG=-all "${WINE_ARCH}" uninstaller --list 2>&1 | grep "${mono_installer_desc}" | cut -f1 -d\|)" + if test "${mono_uuid}"; then + "${WINE_ARCH}" uninstaller --remove "${mono_uuid}" + mono_install_found=1 + fi + done + + if [ "${mono_install_found}" -eq 1 ]; then + "${WINE_ARCH}" reg delete "HKLM\\Software\\Microsoft\\NET Framework Setup\\NDP\\v3.5" /f || true + "${WINE_ARCH}" reg delete "HKLM\\Software\\Microsoft\\NET Framework Setup\\NDP\\v4" /f || true + + for mscoree_dll in "${W_SYSTEM32_DLLS}/mscoree.dll" "${W_SYSTEM64_DLLS}/mscoree.dll"; do + if [ -f "${mscoree_dll}" ] && grep --quiet --text "WINE_MONO_OVERRIDES" "${mscoree_dll}"; then + w_try rm -f "${mscoree_dll}" + fi done elif [ -z "$1" ] || [ "$1" != "internal" ]; then - # Bail out if mono isn't installed, so we don't break .Net setups w_warn "Mono does not appear to be installed." - return - fi - - "${WINE_ARCH}" reg delete "HKLM\\Software\\Microsoft\\NET Framework Setup\\NDP\\v3.5" /f || true - "${WINE_ARCH}" reg delete "HKLM\\Software\\Microsoft\\NET Framework Setup\\NDP\\v4" /f || true - - w_try rm -f "${W_WINDIR_UNIX}/system32/mscoree.dll" - if [ "${W_ARCH}" = "win64" ]; then - w_try rm -f "${W_WINDIR_UNIX}/syswow64/mscoree.dll" fi } @@ -23333,6 +19892,7 @@ load_remove_mono() #---------------------------------------------------------------- w_metadata sandbox settings \ + title_bg="Добавете папката в пясъчника - премахнете връзките към \$HOME" \ title_uk="Пісочниця wineprefix - видалити посилання до HOME" \ title="Sandbox the wineprefix - remove links to \$HOME" @@ -23357,18 +19917,23 @@ load_sandbox() #---------------------------------------------------------------- w_metadata sound=alsa settings \ + title_bg="Задайте звуковия драйвер на ALSA" \ title_uk="Встановити звуковий драйвер ALSA" \ title="Set sound driver to ALSA" w_metadata sound=coreaudio settings \ + title_bg="Задайте звуковия драйвер на Mac CoreAudio" \ title_uk="Встановити звуковий драйвер Mac CoreAudio" \ title="Set sound driver to Mac CoreAudio" w_metadata sound=disabled settings \ + title_bg="Задайте звуковия драйвер на disabled" \ title_uk="Вимкнути звуковий драйвер" \ title="Set sound driver to disabled" w_metadata sound=oss settings \ + title_bg="Задайте звуковия драйвер на OSS" \ title_uk="Встановити звуковий драйвер OSS" \ title="Set sound driver to OSS" w_metadata sound=pulse settings \ + title_bg="Задайте звуковия драйвер на PulseAudio" \ title_uk="Встановити звуковий драйвер PulseAudio" \ title="Set sound driver to PulseAudio" @@ -23389,19 +19954,20 @@ _EOF_ #---------------------------------------------------------------- w_metadata nt351 settings \ + title_bg="Задайте Windows NT 3.51" \ title_uk="Встановити версію Windows NT 3.51" \ title="Set Windows version to Windows NT 3.51" load_nt351() { w_package_unsupported_win64 - w_package_broken "https://bugs.winehq.org/show_bug.cgi?id=41559" "" "5.7" w_set_winver nt351 } #---------------------------------------------------------------- w_metadata nt40 settings \ + title_bg="Задайте Windows NT 4.0" \ title_uk="Встановити версію Windows NT 4.0" \ title="Set Windows version to Windows NT 4.0" @@ -23414,6 +19980,7 @@ load_nt40() #---------------------------------------------------------------- w_metadata vista settings \ + title_bg="Задайте Windows Vista" \ title_uk="Встановити версію Windows Vista" \ title="Set Windows version to Windows Vista" @@ -23425,19 +19992,20 @@ load_vista() #---------------------------------------------------------------- w_metadata win20 settings \ + title_bg="Задайте Windows 2.0" \ title_uk="Встановити версію Windows 2.0" \ title="Set Windows version to Windows 2.0" load_win20() { w_package_unsupported_win64 - w_package_broken "https://bugs.winehq.org/show_bug.cgi?id=41559" "" "5.7" w_set_winver win20 } #---------------------------------------------------------------- w_metadata win2k settings \ + title_bg="Задайте Windows 2000" \ title_uk="Встановити версію Windows 2000" \ title="Set Windows version to Windows 2000" @@ -23450,6 +20018,7 @@ load_win2k() #---------------------------------------------------------------- w_metadata win2k3 settings \ + title_bg="Задайте Windows 2003" \ title_uk="Встановити версію Windows 2003" \ title="Set Windows version to Windows 2003" @@ -23461,6 +20030,7 @@ load_win2k3() #---------------------------------------------------------------- w_metadata win2k8 settings \ + title_bg="Задайте Windows 2008" \ title_uk="Встановити версію Windows 2008" \ title="Set Windows version to Windows 2008" @@ -23472,6 +20042,7 @@ load_win2k8() #---------------------------------------------------------------- w_metadata win2k8r2 settings \ + title_bg="Задайте Windows 2008 R2" \ title_uk="Встановити версію Windows 2008 R2" \ title="Set Windows version to Windows 2008 R2" @@ -23483,19 +20054,20 @@ load_win2k8r2() #---------------------------------------------------------------- w_metadata win30 settings \ + title_bg="Задайте Windows 3.0" \ title_uk="Встановити версію Windows 3.0" \ title="Set Windows version to Windows 3.0" load_win30() { w_package_unsupported_win64 - w_package_broken "https://bugs.winehq.org/show_bug.cgi?id=41559" "" "5.7" w_set_winver win30 } #---------------------------------------------------------------- w_metadata win31 settings \ + title_bg="Задайте Windows 3.1" \ title_uk="Встановити версію Windows 3.1" \ title="Set Windows version to Windows 3.1" @@ -23508,6 +20080,7 @@ load_win31() #---------------------------------------------------------------- w_metadata win7 settings \ + title_bg="Задайте Windows 7" \ title_uk="Встановити версію Windows 7" \ title="Set Windows version to Windows 7" @@ -23519,6 +20092,7 @@ load_win7() #---------------------------------------------------------------- w_metadata win8 settings \ + title_bg="Задайте Windows 8" \ title_uk="Встановити версію Windows 8" \ title="Set Windows version to Windows 8" @@ -23530,6 +20104,7 @@ load_win8() #---------------------------------------------------------------- w_metadata win81 settings \ + title_bg="Задайте Windows 8.1" \ title_uk="Встановити версію Windows 8.1" \ title="Set Windows version to Windows 8.1" @@ -23541,6 +20116,7 @@ load_win81() #---------------------------------------------------------------- w_metadata win10 settings \ + title_bg="Задайте Windows 10" \ title_uk="Встановити версію Windows 10" \ title="Set Windows version to Windows 10" @@ -23551,7 +20127,20 @@ load_win10() #---------------------------------------------------------------- +w_metadata win11 settings \ + title_bg="Задайте Windows 11" \ + title_uk="Встановити версію Windows 11" \ + title="Set Windows version to Windows 11" + +load_win11() +{ + w_set_winver win11 +} + +#---------------------------------------------------------------- + w_metadata win95 settings \ + title_bg="Задайте Windows 95" \ title_uk="Встановити версію Windows 95" \ title="Set Windows version to Windows 95" @@ -23564,6 +20153,7 @@ load_win95() #---------------------------------------------------------------- w_metadata win98 settings \ + title_bg="Задайте Windows 98" \ title_uk="Встановити версію Windows 98" \ title="Set Windows version to Windows 98" @@ -23576,13 +20166,13 @@ load_win98() #---------------------------------------------------------------- w_metadata winme settings \ + title_bg="Задайте Windows ME" \ title_uk="Встановити версію Windows ME" \ title="Set Windows version to Windows ME" load_winme() { w_package_unsupported_win64 - w_package_broken "https://bugs.winehq.org/show_bug.cgi?id=41559" "" "5.7" w_set_winver winme } @@ -23590,6 +20180,7 @@ load_winme() # Really, we should support other values, since winetricks did w_metadata winver= settings \ + title_bg="Задайте Windows 7 (по подразбиране)" \ title_uk="Встановити версію Windows за замовчуванням (Windows 7)" \ title="Set Windows version to default (win7)" @@ -23601,6 +20192,7 @@ load_winver() #---------------------------------------------------------------- w_metadata winxp settings \ + title_bg="Задайте Windows XP" \ title_uk="Встановити версію Windows XP" \ title="Set Windows version to Windows XP" @@ -23611,12 +20203,27 @@ load_winxp() #---- Main Program ---- +# In GUI mode, allow a user to select an arbitrary executable and start it +winetricks_misc_exe() +{ + _W_title="Select the exectuable to run" + _W_filter="*.exe *.msi *.msu" + + case "${WINETRICKS_GUI}" in + *zenity) _W_exe="$("${WINETRICKS_GUI}" --file-selection --file-filter="${_W_filter}" --title="${_W_title}")" ;; + *kdialog) _W_exe="$("${WINETRICKS_GUI}" --getopenfilename "${HOME}" "${_W_filter}")" ;; + *) w_die "winetricks_misc_exe only support zenity/kdialog at this time" ;; + esac + # Using start.exe so that .exe/.msi/.msu will work without extra fuss + "${WINE}" start.exe "$(w_winepath -w "${_W_exe}")" +} + winetricks_stats_save() { # Save opt-in status if test "${WINETRICKS_STATS_REPORT}"; then if test ! -d "${W_CACHE}"; then - mkdir -p "${W_CACHE}" + w_try_mkdir "${W_CACHE}" fi echo "${WINETRICKS_STATS_REPORT}" > "${W_CACHE}"/track_usage fi @@ -23634,6 +20241,12 @@ winetricks_stats_init() case ${WINETRICKS_GUI} in zenity) case ${LANG} in + bg*) + title="Еднократен въпрос относно подпомагането на развитието на Winetricks" + question="Искате ли да включите изпращането на статистически данни? Може да го изключите по всяко време с командата winetricks --optout" + thanks="Благодаря! Този въпрос няма да се появи отново. Запомнете, може да го изключите по всяко време с командата winetricks --optout" + declined="Добре. Този въпрос няма да се появи отново." + ;; de*) title="Einmalige Frage zur Hilfe an der Winetricks Entwicklung" question="Möchten Sie die Winetricks Entwicklung unterstützen indem Sie Winetricks Statistiken übermitteln lassen? Sie können die Übermittlung jederzeit mit 'winetricks --optout' ausschalten" @@ -23752,7 +20365,7 @@ winetricks_stats_log_command() *) _W_LOGDIR="${WINEPREFIX}" ;; esac - mkdir -p "${_W_LOGDIR}" + w_try_mkdir "${_W_LOGDIR}" echo "$*" >> "${_W_LOGDIR}"/winetricks.log unset _W_LOGDIR } @@ -23764,6 +20377,8 @@ winetricks_stats_log_command() winetricks_shell() { ( + _W_escape() { printf "'%s'\\n" "$(printf '%s' "$1" | sed -e "s/'/'\\\\''/g")"; } + w_try_cd "${W_DRIVE_C}" export WINE @@ -23774,7 +20389,18 @@ winetricks_shell() *) for term in gnome-terminal konsole Terminal xterm; do if test "$(command -v ${term} 2>/dev/null)"; then - WINEDEBUG=-all ${term} -e "${@}" + if [ -n "${*}" ]; then + # Convert the list of arguments into a single + # string while single quoting each argument. + _W_args="" + for arg in "$@"; do + _W_args="${_W_args}$(_W_escape "${arg}") " + done + + WINEDEBUG=-all ${term} -e "${_W_args}" + else + WINEDEBUG=-all ${term} + fi break fi done @@ -23793,7 +20419,7 @@ execute_command() case "$1" in # FIXME: avoid duplicated code - apps|benchmarks|dlls|fonts|games|prefix|settings) + apps|benchmarks|dlls|fonts|prefix|settings) WINETRICKS_CURMENU="$1" ;; @@ -23815,7 +20441,7 @@ execute_command() list-installed) winetricks_list_installed ;; list-all) old_menu="${WINETRICKS_CURMENU}" - for WINETRICKS_CURMENU in apps benchmarks dlls fonts games prefix settings; do + for WINETRICKS_CURMENU in apps benchmarks dlls fonts prefix settings; do echo "===== ${WINETRICKS_CURMENU} =====" winetricks_list_all done @@ -23834,6 +20460,7 @@ execute_command() uninstaller) "${WINE}" uninstaller ;; shell) winetricks_shell ;; winecmd) winetricks_shell "${WINE}" "cmd.exe" ;; + wine_misc_exe) winetricks_misc_exe ;; # These have to come before *=disabled to avoid looking like DLLs cfc=disable*) w_call cfc=disabled ;; @@ -23998,7 +20625,7 @@ if ! test "${WINETRICKS_LIB}"; then # GUI case # No non-option arguments given, so read them from GUI, and loop until user quits - if [ ${WINETRICKS_GUI} = "none" ]; then + if [ "${WINETRICKS_GUI}" = "none" ]; then winetricks_detect_gui --gui fi winetricks_detect_sudo @@ -24022,7 +20649,7 @@ if ! test "${WINETRICKS_LIB}"; then if test "${verbs}" = ""; then # "user didn't pick anything, back up a level in the menu" case "${WINETRICKS_CURMENU}-${WINETRICKS_OPT_SHAREDPREFIX}" in - apps-0|benchmarks-0|games-0|main-*) WINETRICKS_CURMENU=prefix ;; + apps-0|benchmarks-0|main-*) WINETRICKS_CURMENU=prefix ;; prefix-*) break ;; *) WINETRICKS_CURMENU=main ;; esac @@ -24051,7 +20678,7 @@ if ! test "${WINETRICKS_LIB}"; then done case "${WINETRICKS_CURMENU}-${WINETRICKS_OPT_SHAREDPREFIX}" in - prefix-*|apps-0|benchmarks-0|games-0) + prefix-*|apps-0|benchmarks-0) # After installing isolated app, return to prefix picker WINETRICKS_CURMENU=prefix ;;