The forum

[Script] The Elder Scrolls Online

Author Replies
Jump to the page: 1 - 2 - 3
Grolm Saturday 8 March 2014 at 1:13
GrolmAnonymous

The Elder Scrolls Online is a MMORPG game from Zenimax online (Bethesdha).

It is sill in closed beta, but release date will be early in April.

Setup images and Icons are available in the following archive :
eso.tar.xz

#!/bin/bash
# Date : (2014-03-04 09-55)
# Last revision : (2014-03-04 14:39)
# Wine version used : 1.7.11
# Distribution used to test : Xubuntu 13.10
# Author : Grolm

[ "$PLAYONLINUX" = "" ] && exit 0
source "$PLAYONLINUX/lib/sources"

TITLE="The Elder Scrolls Online"
PREFIX="TESO"
WINEVERSION="1.7.11"
AUTHOR="Grolm"
GAME_VMS="512"
GAME_URL="http://elderscrollsonline.com"
GAME_EDITOR="Bethesda (Zenimax online)"
SETUP="Install_ESO_Beta.exe"
SETUP_URL="https://elderscrolls-a.akamaihd.net/products/BNA_Launcher/${SETUP}"

POL_GetSetupImages "http://FIXME/top.jpg" "http://FIXME/left.jpg" "$TITLE"

POL_SetupWindow_Init

# Presentation
POL_SetupWindow_presentation \
    "${TITLE}" \
    "${GAME_EDITOR}" \
    "${GAME_URL}" \
    "Grolm" \
    "${PREFIX}"

# Create Prefix
POL_System_SetArch "x86"
POL_Wine_SelectPrefix "${PREFIX}"
POL_Wine_PrefixCreate "${WINEVERSION}"

# Dependencies
POL_Call POL_Install_vcrun2010

# Asking about memory size of graphic card
POL_SetupWindow_VMS $GAME_VMS

# Set Graphic Card information keys for wine
POL_Wine_SetVideoDriver

# Point My Documents to Documents and create default configuration for OPENGL
mkdir -p "${HOME}/Documents/Elder Scrolls Online/live"
cat <<EOF > "${HOME}/Documents/Elder Scrolls Online/live/UserSettings.txt"
SET GraphicsDriver.7 "OPENGL"
EOF
rm -rf "${WINEPREFIX}/drive_c/users/${USER}/My Documents"
ln -sf "${HOME}/Documents" "${WINEPREFIX}/drive_c/users/${USER}/My Documents"

# Create Temp space
POL_System_TmpCreate "${PREFIX}"

# Select Install Method
POL_SetupWindow_InstallMethod "LOCAL,DOWNLOAD"

# Installation
if [ "$INSTALL_METHOD" = "LOCAL" ]
then
    POL_SetupWindow_browse "Please select the installation file to run." "${TITLE} installation"
elif [ "$INSTALL_METHOD" = "DOWNLOAD" ]
then
    cd "$POL_System_TmpDir"
    POL_Download "${SETUP_URL}"
    APP_ANSWER="${POL_System_TmpDir}/${SETUP}"
fi
POL_SetupWindow_message \
    "$(eval_gettext "Follow default setup but when asked check only the 'Install DirectX Redistribuable' box")" \
    "${TITLE}"
POL_Wine_WaitBefore "${TITLE}"
POL_Wine start /unix "${APP_ANSWER}"
POL_Wine_WaitExit "${TITLE}"

# Extract png icon
cd "${WINEPREFIX}/drive_c/Program Files/Zenimax Online/Launcher"
mkdir -p "${HOME}/.local/share/icons"
icotool -x -w256 -h256 ESO.ico -o "${HOME}/.local/share/icons/${TITLE}.png"

# Remove Windows desktop lnk
rm "${WINEPREFIX}/drive_c/users/${USER}/Desktop/${TITLE}"*.lnk

# Create Shortcut
POL_Shortcut \
    "Bethesda.net_Launcher.exe" \
    "${TITLE}" \
    "${TITLE}.png" \
    "/InstallOrRun \"ESO_Beta\"" \
    "Game;RolePlaying;"

# Test if ca certificate used by launcher is already installed, if not propose
# it's installation, but it require root privileges
cert="$(grep -rl 'xXFnbqxM25DrUaUaYgfQvmoARzxyL+xPYT5zhc5aCre6wBwTdeMiOSjdbR0JRp1P' /usr/share/ca-certificates)"
cert=${cert#/usr/share/ca-certificates/}
if ! grep -q "${cert}" /etc/ca-certificates.conf
then
    cd "${POL_System_TmpDir}"
    POL_SetupWindow_question \
    "$(eval_gettext 'Do you want to install CA Certificate for launcher ? (require root privileges)')" \
    "${TITLE} CA Certificate installation"

    if [ "${APP_ANSWER}" = "TRUE" ]
    then
    # Generate the Certificate setup script
    cat <<"EOS" > teso-setup-ca.sh
#!/bin/bash
mkdir -p /usr/share/ca-certificates/custom
cat > /usr/share/ca-certificates/custom/Thawte_CS_CA_G2.crt <<EOF
-----BEGIN CERTIFICATE-----
MIIEnDCCA4SgAwIBAgIQR5dNeHOlvKsNL7NwGS/OXjANBgkqhkiG9w0BAQUFADCB
qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf
Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw
MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV
BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMTAwMjA4MDAwMDAwWhcNMjAw
MjA3MjM1OTU5WjBKMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMVGhhd3RlLCBJbmMu
MSQwIgYDVQQDExtUaGF3dGUgQ29kZSBTaWduaW5nIENBIC0gRzIwggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3i891W58l2n45sJPbONOpI9CC+ukkflwL
joP45npZ5qPFmKeZ0kT/AKalOQSK2imI6tui8xyZFSbCsfT84QxHqQkRBgogkrnH
oASMXJQZq1slLB1ifnANzmFs3SuCyc5dSF/3wr68QSMeTyld10+89MUq/GPmfCZO
mad5QZ4QSnp5ycaG94aV0ibOPBgq1nzOr82tu/eCLHAmN0XlD0cixgEovS6DXGqk
R8Hn0NhrgUY/IRf1B8VDWqZnLLh7YBG1g+71dApycUQ9WP7oGqs4w1nbf244fXbH
cmmYNpZX02Yc0lSRBC5UGbDcPbUiXobVKn4g313merFl/sUCTjEtAgMBAAGjggEc
MIIBGDASBgNVHRMBAf8ECDAGAQH/AgEAMDQGA1UdHwQtMCswKaAnoCWGI2h0dHA6
Ly9jcmwudGhhd3RlLmNvbS9UaGF3dGVQQ0EuY3JsMA4GA1UdDwEB/wQEAwIBBjAy
BggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnRoYXd0ZS5j
b20wHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMDMCkGA1UdEQQiMCCkHjAc
MRowGAYDVQQDExFWZXJpU2lnbk1QS0ktMi0xMDAdBgNVHQ4EFgQU1A1lP3q9NMb+
R+dMDcC98t4Vq3EwHwYDVR0jBBgwFoAUe1tFz6/Oy3r9MZIaarbzRutXSFAwDQYJ
KoZIhvcNAQEFBQADggEBAFb+U1zhx568p+1+U21qFEtRjEBegF+qpOgv7zjIBMnK
Ps/fOlhOsNS2Y8UpV/oCBZpFTWjbKhvUND2fAMNay5VJpW7hsMX8QU1BSm/Td8jX
OI3kGd4Y8x8VZYNtRQxT+QqaLqVdv28ygRiSGWpVAK1jHFIGflXZKWiuSnwYmnmI
ayMj2Cc4KimHdsr7x7ZiIx/telZM3ZwyW/U9DEYYlTsqI2iDZEHZAG0PGSQVaHK9
xXFnbqxM25DrUaUaYgfQvmoARzxyL+xPYT5zhc5aCre6wBwTdeMiOSjdbR0JRp1P
uuhAgZHGpM6UchsBzypuFWeVia59t7fN+Qo9dbZrPCU=
-----END CERTIFICATE-----
EOF

grep -q custom/Thawte_CS_CA_G2.crt /etc/ca-certificates.conf \
    || echo "custom/Thawte_CS_CA_G2.crt" >> /etc/ca-certificates.conf

update-ca-certificates
EOS
    POL_Call POL_Function_RootCommand "sudo bash $POL_System_TmpDir/teso-setup-ca.sh; exit"
    fi
fi
# Remove Temp Space
POL_System_TmpDelete

POL_SetupWindow_Close
exit 0

Edited by Grolm

Grolm Saturday 8 March 2014 at 14:50
GrolmAnonymous

Hello,

It's my first contribution, do I have to wait for some kind of validation here before uploading it as a new installer (http://www.playonmac.com/en/new_app.html)

Regards
Grolm Monday 10 March 2014 at 17:17
GrolmAnonymous

New images :
eso.tar.xz

Some improvement on the script :

#!/bin/bash
# Date : (2014-03-04 09-55)
# Last revision : (2014-03-10 17:23)
# Wine version used : 1.7.11
# Distribution used to test : Xubuntu 13.10
# Author : Grolm

# CHANGELOG
#
#  --- 2014-03-10 ---
# Add UserSettings creation for liveeu beside live in Documents
# Point to temporary hosted top.png and left.png (googleusercontent.com)
#

[ "$PLAYONLINUX" = "" ] && exit 0
source "$PLAYONLINUX/lib/sources"

TITLE="The Elder Scrolls Online"
PREFIX="TESO"
WINEVERSION="1.7.11"
AUTHOR="Grolm"
GAME_VMS="512"
GAME_URL="http://elderscrollsonline.com"
GAME_EDITOR="Bethesda (Zenimax online)"
SETUP="Install_ESO_Beta.exe"
SETUP_URL="https://elderscrolls-a.akamaihd.net/products/BNA_Launcher/${SETUP}"

# URL to be changed
TOP_URL="http://lh6.googleusercontent.com/-YhPqIt5GdOs/Ux3mhn6cpuI/AAAAAAAAAYI/IQovGw1Ce1o/s64-no/top.png"
LEFT_URL="http://lh4.googleusercontent.com/-7GSUakQgwGQ/Ux3mpPf7MjI/AAAAAAAAAYQ/dA8VT2SSr8I/w150-h356-no/left.png"

# Create Temp space
POL_System_TmpCreate "${PREFIX}"
cd "${POL_System_TmpDir}"

POL_GetSetupImages "${TOP_URL}" "${LEFT_URL}" "${TITLE}"

POL_SetupWindow_Init

# Presentation
POL_SetupWindow_presentation \
    "${TITLE}" \
    "${GAME_EDITOR}" \
    "${GAME_URL}" \
    "Grolm" \
    "${PREFIX}"

# Create Prefix
POL_System_SetArch "x86"
POL_Wine_SelectPrefix "${PREFIX}"
POL_Wine_PrefixCreate "${WINEVERSION}"

# Dependencies
POL_Call POL_Install_vcrun2010

# Asking about memory size of graphic card
POL_SetupWindow_VMS ${GAME_VMS}

# Set Graphic Card information keys for wine
POL_Wine_SetVideoDriver

# Point My Documents to Documents and create default configuration for OPENGL
mkdir -p "${HOME}/Documents/Elder Scrolls Online/live"{,eu}
cat <<EOF > "${HOME}/Documents/Elder Scrolls Online/live/UserSettings.txt"
SET GraphicsDriver.7 "OPENGL"
EOF
cp "${HOME}/Documents/Elder Scrolls Online"/live{,eu}/UserSettings.txt
rm -rf "${WINEPREFIX}/drive_c/users/${USER}/My Documents"
ln -sf "${HOME}/Documents" "${WINEPREFIX}/drive_c/users/${USER}/My Documents"

# Select Install Method
POL_SetupWindow_InstallMethod "LOCAL,DOWNLOAD"

# Installation
if [ "${INSTALL_METHOD}" = "LOCAL" ]
then
    POL_SetupWindow_browse "Please select the installation file to run." "${TITLE} installation"
else
    cd "${POL_System_TmpDir}"
    POL_Download "${SETUP_URL}"
    APP_ANSWER="${POL_System_TmpDir}/${SETUP}"
fi
POL_SetupWindow_message \
    "$(eval_gettext "Follow default setup but when asked leave only checked the 'Install DirectX Redistribuable' box")" \
    "${TITLE}"
POL_Wine_WaitBefore "${TITLE}"
POL_Wine start /unix "${APP_ANSWER}"
POL_Wine_WaitExit "${TITLE}"

# Extract png icon
cd "${WINEPREFIX}/drive_c/Program Files/Zenimax Online/Launcher"
mkdir -p "${HOME}/.local/share/icons"
icotool -x -w256 -h256 ESO.ico -o "${HOME}/.local/share/icons/${TITLE}.png"

# Remove Windows desktop lnk
rm "${WINEPREFIX}/drive_c/users/${USER}/Desktop/${TITLE}"*.lnk

# Create Shortcut
POL_Shortcut \
    "Bethesda.net_Launcher.exe" \
    "${TITLE}" \
    "${TITLE}.png" \
    "/InstallOrRun \"ESO_Beta\"" \
    "Game;RolePlaying;"

# Test if ca certificate used by launcher is already installed, if not propose
# the root command to install it
cert="$(grep -rl 'xXFnbqxM25DrUaUaYgfQvmoARzxyL+xPYT5zhc5aCre6wBwTdeMiOSjdbR0JRp1P' /usr/share/ca-certificates)"
cert=${cert#/usr/share/ca-certificates/}
if ! grep -q "${cert}" /etc/ca-certificates.conf
then
    cd "${POL_System_TmpDir}"
    POL_SetupWindow_question \
    "$(eval_gettext 'Do you want to install CA Certificate for launcher ? (require root privileges)')" \
    "${TITLE} CA Certificate installation"

    if [ "${APP_ANSWER}" = "TRUE" ]
    then
    # Generate the Certificate setup script
    cat <<"EOS" > teso-setup-ca.sh
#!/bin/bash
mkdir -p /usr/share/ca-certificates/custom
cat > /usr/share/ca-certificates/custom/Thawte_CS_CA_G2.crt <<EOF
-----BEGIN CERTIFICATE-----
MIIEnDCCA4SgAwIBAgIQR5dNeHOlvKsNL7NwGS/OXjANBgkqhkiG9w0BAQUFADCB
qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf
Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw
MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV
BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMTAwMjA4MDAwMDAwWhcNMjAw
MjA3MjM1OTU5WjBKMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMVGhhd3RlLCBJbmMu
MSQwIgYDVQQDExtUaGF3dGUgQ29kZSBTaWduaW5nIENBIC0gRzIwggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3i891W58l2n45sJPbONOpI9CC+ukkflwL
joP45npZ5qPFmKeZ0kT/AKalOQSK2imI6tui8xyZFSbCsfT84QxHqQkRBgogkrnH
oASMXJQZq1slLB1ifnANzmFs3SuCyc5dSF/3wr68QSMeTyld10+89MUq/GPmfCZO
mad5QZ4QSnp5ycaG94aV0ibOPBgq1nzOr82tu/eCLHAmN0XlD0cixgEovS6DXGqk
R8Hn0NhrgUY/IRf1B8VDWqZnLLh7YBG1g+71dApycUQ9WP7oGqs4w1nbf244fXbH
cmmYNpZX02Yc0lSRBC5UGbDcPbUiXobVKn4g313merFl/sUCTjEtAgMBAAGjggEc
MIIBGDASBgNVHRMBAf8ECDAGAQH/AgEAMDQGA1UdHwQtMCswKaAnoCWGI2h0dHA6
Ly9jcmwudGhhd3RlLmNvbS9UaGF3dGVQQ0EuY3JsMA4GA1UdDwEB/wQEAwIBBjAy
BggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnRoYXd0ZS5j
b20wHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMDMCkGA1UdEQQiMCCkHjAc
MRowGAYDVQQDExFWZXJpU2lnbk1QS0ktMi0xMDAdBgNVHQ4EFgQU1A1lP3q9NMb+
R+dMDcC98t4Vq3EwHwYDVR0jBBgwFoAUe1tFz6/Oy3r9MZIaarbzRutXSFAwDQYJ
KoZIhvcNAQEFBQADggEBAFb+U1zhx568p+1+U21qFEtRjEBegF+qpOgv7zjIBMnK
Ps/fOlhOsNS2Y8UpV/oCBZpFTWjbKhvUND2fAMNay5VJpW7hsMX8QU1BSm/Td8jX
OI3kGd4Y8x8VZYNtRQxT+QqaLqVdv28ygRiSGWpVAK1jHFIGflXZKWiuSnwYmnmI
ayMj2Cc4KimHdsr7x7ZiIx/telZM3ZwyW/U9DEYYlTsqI2iDZEHZAG0PGSQVaHK9
xXFnbqxM25DrUaUaYgfQvmoARzxyL+xPYT5zhc5aCre6wBwTdeMiOSjdbR0JRp1P
uuhAgZHGpM6UchsBzypuFWeVia59t7fN+Qo9dbZrPCU=
-----END CERTIFICATE-----
EOF

grep -q custom/Thawte_CS_CA_G2.crt /etc/ca-certificates.conf \
    || echo "custom/Thawte_CS_CA_G2.crt" >> /etc/ca-certificates.conf

update-ca-certificates
EOS
    POL_Call POL_Function_RootCommand "sudo bash ${POL_System_TmpDir}/teso-setup-ca.sh; exit"
    fi
fi
# Remove Temp Space
POL_System_TmpDelete

POL_SetupWindow_Close
exit 0

Edited by Grolm

petch Tuesday 11 March 2014 at 7:39
petch

Hi Grolm,
Well, your script is pretty complex so I waited a bit for other maintainers comments, but seems I'll get none, so I'll give it a try:

POL_System_SetArch "x86"
POL_Wine_SelectPrefix "${PREFIX}"
POL_Wine_PrefixCreate "${WINEVERSION}"

x86 architecture is the default so the first statement is not strictly necessary (but doesn't hurt)
Also, it's a good practice to start with all the interactive statements and downloads, so the prefix is created as late as possible (and not created if anything goes wrong during user interactions and downloads), so what about moving ll 71-82 to line 48?

# Point My Documents to Documents and create default configuration for OPENGL

Wine already links the windows user directory to point to the Linux user directory, why not rely on that?

POL_SetupWindow_browse "Please select the installation file to run." "${TITLE} installation"

You forgot the eval_gettext on this one

POL_Wine_WaitBefore "${TITLE}"
POL_Wine start /unix "${APP_ANSWER}"
POL_Wine_WaitExit "${TITLE}"

start /unix is usually not necessary (say 95% of the time), needs testing but since it has drawback it's really better to remove it if possible.
Also, it shouldn't be necessary to use both WaitBefore and WaitAfter on a statement, as one is useful for blocking statements, and the other for non-blocking statements. You'll probably find that without start /unix the installation is blocking and you only need WaitBefore (to be tested).

# Extract png icon
cd "${WINEPREFIX}/drive_c/Program Files/Zenimax Online/Launcher"
mkdir -p "${HOME}/.local/share/icons"
icotool -x -w256 -h256 ESO.ico -o "${HOME}/.local/share/icons/${TITLE}.png"

I'm not sure it's the right thing to do, that's one of the things I would have liked some other maintainers comments on. Anyway, if the point is to extract some icon for PoL shortcut, the simplest way is to extract it manually then store it on the web server (which is what the 3rd parameter of POL_Shortcut is about)

# Remove Windows desktop lnk
rm "${WINEPREFIX}/drive_c/users/${USER}/Desktop/${TITLE}"*.lnk

For some time I believed that PoL's disabling of winemenubuilder.exe was enough to prevent that, but given that several scripts do things like that, I'm no longer sure. Sounds like a PoL bug.

(certificates massaging)
can't tell if that's the right thing to do, much less the simplest. Again something I would have liked to have a 2nd advice on.
I suppose it's Linux specific, at least.

Regards,
Pierre.

Grolm Tuesday 11 March 2014 at 22:06
GrolmAnonymous

Thank you for your review. Here my script with most of your suggestions taken into account :

#!/bin/bash
# Date : (2014-03-04 09-55)
# Last revision : (2014-03-11 22:04)
# Wine version used : 1.7.11
# Distribution used to test : Xubuntu 13.10
# Author : Grolm

# CHANGELOG
#
# --- 2014-03-10 ---
# Add UserSettings creation for liveeu beside live in Documents
# Point to temporary hosted top.png and left.png (googleusercontent.com)
#
# --- 2014-03-11 ---
# Add missing eval_gettext
# Move Prefix creation after setup download/selection
# Remove POL_Wine_WaitExit and start /unix
# Remove png icon extraction
# Add a check before CA installation on /usr/share/ca-certificates and
# /etc/ca-certificates.conf. Ask for CA manual installation if test failed.

[ "$PLAYONLINUX" = "" ] && exit 0
source "$PLAYONLINUX/lib/sources"

TITLE="The Elder Scrolls Online"
PREFIX="TESO"
WINEVERSION="1.7.11"
AUTHOR="Grolm"
GAME_VMS="512"
GAME_URL="http://elderscrollsonline.com"
GAME_EDITOR="Bethesda (Zenimax online)"
SETUP="Install_ESO_Beta.exe"
SETUP_URL="https://elderscrolls-a.akamaihd.net/products/BNA_Launcher/${SETUP}"

# URL to be changed
TOP_URL="http://lh6.googleusercontent.com/-YhPqIt5GdOs/Ux3mhn6cpuI/AAAAAAAAAYI/IQovGw1Ce1o/s64-no/top.png"
LEFT_URL="http://lh4.googleusercontent.com/-7GSUakQgwGQ/Ux3mpPf7MjI/AAAAAAAAAYQ/dA8VT2SSr8I/w150-h356-no/left.png"

# Create Temp space
POL_System_TmpCreate "${PREFIX}"
cd "${POL_System_TmpDir}"

POL_GetSetupImages "${TOP_URL}" "${LEFT_URL}" "${TITLE}"

POL_SetupWindow_Init

# Presentation
POL_SetupWindow_presentation \
    "${TITLE}" \
    "${GAME_EDITOR}" \
    "${GAME_URL}" \
    "Grolm" \
    "${PREFIX}"

# Select Install Method
POL_SetupWindow_InstallMethod "LOCAL,DOWNLOAD"

# Installation
if [ "${INSTALL_METHOD}" = "LOCAL" ]
then
    POL_SetupWindow_browse "$(eval_gettext 'Please select the installation file to run.')" "${TITLE} installation"
    SETUP_FILE="${APP_ANSWER}"
else
    cd "${POL_System_TmpDir}"
    POL_Download "${SETUP_URL}"
    SETUP_FILE="${POL_System_TmpDir}/${SETUP}"
fi

[ -f "${SETUP_FILE}" ] || exit 1

# Create Prefix
POL_System_SetArch "x86"
POL_Wine_SelectPrefix "${PREFIX}"
POL_Wine_PrefixCreate "${WINEVERSION}"

# Dependencies
POL_Call POL_Install_vcrun2010

# Asking about memory size of graphic card
POL_SetupWindow_VMS ${GAME_VMS}

# Set Graphic Card information keys for wine
POL_Wine_SetVideoDriver

# Point My Documents to Documents and create default configuration for OPENGL
mkdir -p "${HOME}/Documents/Elder Scrolls Online/live"{,eu}
cat <<EOF > "${HOME}/Documents/Elder Scrolls Online/live/UserSettings.txt"
SET GraphicsDriver.7 "OPENGL"
EOF
cp "${HOME}/Documents/Elder Scrolls Online"/live{,eu}/UserSettings.txt
rm -rf "${WINEPREFIX}/drive_c/users/${USER}/My Documents"
ln -sf "${HOME}/Documents" "${WINEPREFIX}/drive_c/users/${USER}/My Documents"

POL_SetupWindow_message \
    "$(eval_gettext "Follow default setup but when asked leave only checked the 'Install DirectX Redistribuable' box")" \
    "${TITLE}"

POL_Wine_WaitBefore "${TITLE}"
POL_Wine "${SETUP_FILE}"

# Remove Windows desktop lnk
rm "${WINEPREFIX}/drive_c/users/${USER}/Desktop/${TITLE}"*.lnk

# Create Shortcut
POL_Shortcut \
    "Bethesda.net_Launcher.exe" \
    "${TITLE}" \
    "${TITLE}.png" \
    "/InstallOrRun \"ESO_Beta\"" \
    "Game;RolePlaying;"


POL_SetupWindow_question \
    "$(eval_gettext 'Do you want to install CA Certificate for launcher ? (require root privileges)')" \
    "${TITLE} CA Certificate installation"

if [ "${APP_ANSWER}" = "TRUE" ]
then
    cd "${POL_System_TmpDir}"
    cat > Thawte_CS_CA_G2.crt <<EOF
-----BEGIN CERTIFICATE-----
MIIEnDCCA4SgAwIBAgIQR5dNeHOlvKsNL7NwGS/OXjANBgkqhkiG9w0BAQUFADCB
qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf
Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw
MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV
BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMTAwMjA4MDAwMDAwWhcNMjAw
MjA3MjM1OTU5WjBKMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMVGhhd3RlLCBJbmMu
MSQwIgYDVQQDExtUaGF3dGUgQ29kZSBTaWduaW5nIENBIC0gRzIwggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3i891W58l2n45sJPbONOpI9CC+ukkflwL
joP45npZ5qPFmKeZ0kT/AKalOQSK2imI6tui8xyZFSbCsfT84QxHqQkRBgogkrnH
oASMXJQZq1slLB1ifnANzmFs3SuCyc5dSF/3wr68QSMeTyld10+89MUq/GPmfCZO
mad5QZ4QSnp5ycaG94aV0ibOPBgq1nzOr82tu/eCLHAmN0XlD0cixgEovS6DXGqk
R8Hn0NhrgUY/IRf1B8VDWqZnLLh7YBG1g+71dApycUQ9WP7oGqs4w1nbf244fXbH
cmmYNpZX02Yc0lSRBC5UGbDcPbUiXobVKn4g313merFl/sUCTjEtAgMBAAGjggEc
MIIBGDASBgNVHRMBAf8ECDAGAQH/AgEAMDQGA1UdHwQtMCswKaAnoCWGI2h0dHA6
Ly9jcmwudGhhd3RlLmNvbS9UaGF3dGVQQ0EuY3JsMA4GA1UdDwEB/wQEAwIBBjAy
BggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnRoYXd0ZS5j
b20wHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMDMCkGA1UdEQQiMCCkHjAc
MRowGAYDVQQDExFWZXJpU2lnbk1QS0ktMi0xMDAdBgNVHQ4EFgQU1A1lP3q9NMb+
R+dMDcC98t4Vq3EwHwYDVR0jBBgwFoAUe1tFz6/Oy3r9MZIaarbzRutXSFAwDQYJ
KoZIhvcNAQEFBQADggEBAFb+U1zhx568p+1+U21qFEtRjEBegF+qpOgv7zjIBMnK
Ps/fOlhOsNS2Y8UpV/oCBZpFTWjbKhvUND2fAMNay5VJpW7hsMX8QU1BSm/Td8jX
OI3kGd4Y8x8VZYNtRQxT+QqaLqVdv28ygRiSGWpVAK1jHFIGflXZKWiuSnwYmnmI
ayMj2Cc4KimHdsr7x7ZiIx/telZM3ZwyW/U9DEYYlTsqI2iDZEHZAG0PGSQVaHK9
xXFnbqxM25DrUaUaYgfQvmoARzxyL+xPYT5zhc5aCre6wBwTdeMiOSjdbR0JRp1P
uuhAgZHGpM6UchsBzypuFWeVia59t7fN+Qo9dbZrPCU=
-----END CERTIFICATE-----
EOF

    if [ -d /usr/share/ca-certificates ] && [ -f /etc/ca-certificates.conf ]
    then
    # Test if ca certificate used by launcher is already installed, if not propose
    # the root command to install it
    cert="$(grep -rl 'xXFnbqxM25DrUaUaYgfQvmoARzxyL+xPYT5zhc5aCre6wBwTdeMiOSjdbR0JRp1P' /usr/share/ca-certificates)"
    cert=${cert#/usr/share/ca-certificates/}

    # Test
    if ! grep -q "^[[:space:]]*${cert}$" /etc/ca-certificates.conf
    then
        # Generate the Certificate setup script
        cat <<EOF > teso-setup-ca.sh
#!/bin/bash
mkdir -p /usr/share/ca-certificates/custom
cp "${POL_System_TmpDir}/Thawte_CS_CA_G2.crt" /usr/share/ca-certificates/custom
grep -q custom/Thawte_CS_CA_G2.crt /etc/ca-certificates.conf \
    || echo "custom/Thawte_CS_CA_G2.crt" >> /etc/ca-certificates.conf
update-ca-certificates
EOF
        POL_Call POL_Function_RootCommand "sudo bash ${POL_System_TmpDir}/teso-setup-ca.sh; exit"
    fi
    else
    cp "${POL_System_TmpDir}/Thawte_CS_CA_G2.crt" ~/Thawte_CS_CA_G2.crt
    POL_SetupWindow_message \
        "$(eval_gettext "Don't know how to install CA Cert. If the launcher does not start, please refer to your system documentation to manually install ~/Thawte_CS_CA_G2.crt")" \
        "${TITLE}"
    fi
fi

# Remove Temp Space
POL_System_TmpDelete
POL_SetupWindow_Close
exit 0


For the Document symlink I don't want to have an "Elder Scrolls Online" directory created directly on my home folder. I think ~/Documents or maybe .config are better parent places for this folder.

Edited by Grolm

Grolm Friday 21 March 2014 at 13:26
GrolmAnonymous

Hi,

Here the updated script for final installer (not beta). The game will be live on 2014-0-04 (or 5 days earlier for preorders).

The new setup run directly the launcher at end of installation without asking.  I used a hack to wait for end of setup but not the end of Launcher.
It works but there might be a more POL way to do that. I tried different method without success.

Concerning the certificate, the installation works on many distributions but not on redhat / fedora ones. I have not yet found the correct procedure to install certificates on theses distributions.

I would be realy happy if someone with this distribution could help me.

#!/bin/bash
# Date : (2014-03-04 09-55)
# Last revision : (2014-03-21 13-14)
# Wine version used : 1.7.11
# Distribution used to test : Xubuntu 13.10
# Author : Grolm

# CHANGELOG
#
# --- 2014-03-10 ---
# Add UserSettings creation for liveeu beside live in Documents
# Point to temporary hosted top.png and left.png (googleusercontent.com)
#
# --- 2014-03-11 ---
# Add missing eval_gettext
#
# Move Prefix creation after setup download/selection
#
# Remove POL_Wine_WaitExit and start /unix
#
# Remove png icon extraction
#
# Add a check before CA installation on /usr/share/ca-certificates and
# /etc/ca-certificates.conf. Ask for CA manual installation if test failed.
#
# --- 2014-03-21 ---
# Point to realease Installer instead of Beta one.
#
# Move Certificate installation before setup as setup now directly runs the launcher
#
# Certificate installation download the certificate from tbs.
#
# Dirty hack to wait for setup to finish but do not wait for launcher.
#
# Minor text improvments

[ "$PLAYONLINUX" = "" ] && exit 0
source "$PLAYONLINUX/lib/sources"

TITLE="The Elder Scrolls Online"
PREFIX="TESO"
WINEVERSION="1.7.11"
AUTHOR="Grolm"
GAME_VMS="512"
GAME_URL="http://elderscrollsonline.com"
GAME_EDITOR="Bethesda (Zenimax online)"
SETUP="Install_ESO.exe"
SETUP_URL="https://elderscrolls-a.akamaihd.net/products/BNA_Launcher/${SETUP}"
CERT="ThawteCSG2.cer"
CERT_URL="http://www.tbs-internet.com/thawte/${CERT}"


# URL to be changed
TOP_URL="http://lh6.googleusercontent.com/-YhPqIt5GdOs/Ux3mhn6cpuI/AAAAAAAAAYI/IQovGw1Ce1o/s64-no/top.png"
LEFT_URL="http://lh4.googleusercontent.com/-7GSUakQgwGQ/Ux3mpPf7MjI/AAAAAAAAAYQ/dA8VT2SSr8I/w150-h356-no/left.png"

# Create Temp space
POL_System_TmpCreate "${PREFIX}"
cd "${POL_System_TmpDir}"

POL_GetSetupImages "${TOP_URL}" "${LEFT_URL}" "${TITLE}"

POL_SetupWindow_Init

# Presentation
POL_SetupWindow_presentation \
    "${TITLE}" \
    "${GAME_EDITOR}" \
    "${GAME_URL}" \
    "Grolm" \
    "${PREFIX}"

# Select Install Method
POL_SetupWindow_InstallMethod "LOCAL,DOWNLOAD"

# Installation
if [ "${INSTALL_METHOD}" = "LOCAL" ]
then
    cd "${HOME}"
    POL_SetupWindow_browse "$(eval_gettext 'Please select the installation file to run.')" "${TITLE} installation"
    SETUP_FILE="${APP_ANSWER}"
else
    cd "${POL_System_TmpDir}"
    POL_Download "${SETUP_URL}"
    SETUP_FILE="${POL_System_TmpDir}/${SETUP}"
fi

[ -f "${SETUP_FILE}" ] || exit 1

# Certificate installation
POL_SetupWindow_question \
    "$(eval_gettext "Do you want to add 'Thawte Code Signing CA - G2' to your system ?\n\nIt is required to run the game launcher but require root privileges.")" \
    "${TITLE}"

if [ "${APP_ANSWER}" = "TRUE" ]
then
    if [ -d /usr/share/ca-certificates ] && [ -f /etc/ca-certificates.conf ]
    then
        # Test if ca certificate used by launcher is already installed, if not propose
        # the root command to install it
        cert="$(grep -rl 'xXFnbqxM25DrUaUaYgfQvmoARzxyL+xPYT5zhc5aCre6wBwTdeMiOSjdbR0JRp1P' /usr/share/ca-certificates)"
        cert=${cert#/usr/share/ca-certificates/}

        # Test
        if ! grep -q "^[[:space:]]*${cert}$" /etc/ca-certificates.conf
        then
            # Download certificate
            cd "${POL_System_TmpDir}"
            POL_Download "${CERT_URL}" "cac50bdc03d3940cda1819874bf104e0"

            # Generate the Certificate setup script
            cat <<EOF > teso-setup-ca.sh
#!/bin/bash
mkdir -p /usr/share/ca-certificates/custom
cp "${POL_System_TmpDir}/${CERT}" /usr/share/ca-certificates/custom/Thawte_CS_CA_G2.crt
grep -q custom/Thawte_CS_CA_G2.crt /etc/ca-certificates.conf \
    || echo "custom/Thawte_CS_CA_G2.crt" >> /etc/ca-certificates.conf
update-ca-certificates
EOF
            POL_Call POL_Function_RootCommand "sudo bash ${POL_System_TmpDir}/teso-setup-ca.sh; exit"
        fi
    else
        cp "${POL_System_TmpDir}/${CERT}" ${HOME}
        POL_SetupWindow_message \
            "$(eval_gettext "Don't know how to install certificates on your systems.\n\nIf the launcher does not start, please refer to your system documentation to manually install ~/ThawteCSG2.cer")" \
            "${TITLE}"
    fi
fi

# Create Prefix
POL_System_SetArch "x86"
POL_Wine_SelectPrefix "${PREFIX}"
POL_Wine_PrefixCreate "${WINEVERSION}"

# Dependencies
POL_Call POL_Install_vcrun2010

# Asking about memory size of graphic card
POL_SetupWindow_VMS ${GAME_VMS}

# Set Graphic Card information keys for wine
POL_Wine_SetVideoDriver

# Point My Documents to Documents and create default configuration for OPENGL
mkdir -p "${HOME}/Documents/Elder Scrolls Online/live"{,eu}
cat <<EOF > "${HOME}/Documents/Elder Scrolls Online/live/UserSettings.txt"
SET GraphicsDriver.7 "OPENGL"
EOF
cp "${HOME}/Documents/Elder Scrolls Online"/live{,eu}/UserSettings.txt
rm -rf "${WINEPREFIX}/drive_c/users/${USER}/My Documents"
ln -sf "${HOME}/Documents" "${WINEPREFIX}/drive_c/users/${USER}/My Documents"


# Setup
POL_SetupWindow_message \
    "$(eval_gettext "Follow default setup up to 'Installation Options' screen, then:\n 1. Select your region.\n 2. Leave only checked DirectX box.")" \
    "${TITLE}"

POL_Wine_WaitBefore "${TITLE}"
POL_Wine start /unix "${SETUP_FILE}"
sleep 5
# Wait for the Setup to exit. It is a dirty way to do it but POL_Wine without
# start /unix never exit. And with it the POL_Wine_WaitExit method does not work
# with the new eso setup either.
while ps -C "${SETUP}"
do
    echo "Waiting for ${SETUP_FILE} process to finish."
    sleep 1
done

# Remove Windows desktop lnk
rm "${WINEPREFIX}/drive_c/users/${USER}/Desktop/${TITLE}"*.lnk

# Create Shortcut
POL_Shortcut \
    "Bethesda.net_Launcher.exe" \
    "${TITLE}" \
    "${TITLE}.png" \
    "" \
    "Game;RolePlaying;"

# Remove Temp Space
POL_System_TmpDelete
POL_SetupWindow_Close
exit 0

Edited by Grolm

petch Friday 21 March 2014 at 13:34
petch

Being a Debianer myself I can't really help with that...
Let's hope your call will be heard!
Grolm Tuesday 1 April 2014 at 12:21
GrolmAnonymous

Here an update to support fedora certificate installation.

#!/bin/bash
# Date : (2014-03-04 09-55)
# Last revision : (2014-04-01 12-17)
# Wine version used : 1.7.11
# Distribution used to test : Xubuntu 13.10, Fedora 20
# Author : Grolm

# CHANGELOG
#
# --- 2014-03-10 ---
# Add UserSettings creation for liveeu beside live in Documents
# Point to temporary hosted top.png and left.png (googleusercontent.com)
#
# --- 2014-03-11 ---
# Add missing eval_gettext
#
# Move Prefix creation after setup download/selection
#
# Remove POL_Wine_WaitExit and start /unix
#
# Remove png icon extraction
#
# Add a check before CA installation on /usr/share/ca-certificates and
# /etc/ca-certificates.conf. Ask for CA manual installation if test failed.
#
# --- 2014-03-21 ---
# Point to realease Installer instead of Beta one.
#
# Move Certificate installation before setup as setup now directly runs the launcher
#
# Certificate installation download the certificate from tbs.
#
# Dirty hack to wait for setup to finish but do not wait for launcher.
#
# Minor text improvments
#
# --- 2014-04-01 ---
# Upate Certificate installation to support fedora based distributions
#

[ "$PLAYONLINUX" = "" ] && exit 0
source "$PLAYONLINUX/lib/sources"

TITLE="The Elder Scrolls Online"
PREFIX="TESO"
WINEVERSION="1.7.11"
AUTHOR="Grolm"
GAME_VMS="512"
GAME_URL="http://elderscrollsonline.com"
GAME_EDITOR="Bethesda (Zenimax online)"
SETUP="Install_ESO.exe"
SETUP_URL="https://elderscrolls-a.akamaihd.net/products/BNA_Launcher/${SETUP}"
CERT="ThawteCSG2.cer"
CERT_URL="http://www.tbs-internet.com/thawte/${CERT}"


# URL to be changed
TOP_URL="http://lh6.googleusercontent.com/-YhPqIt5GdOs/Ux3mhn6cpuI/AAAAAAAAAYI/IQovGw1Ce1o/s64-no/top.png"
LEFT_URL="http://lh4.googleusercontent.com/-7GSUakQgwGQ/Ux3mpPf7MjI/AAAAAAAAAYQ/dA8VT2SSr8I/w150-h356-no/left.png"

# Create Temp space
POL_System_TmpCreate "${PREFIX}"
cd "${POL_System_TmpDir}"

POL_GetSetupImages "${TOP_URL}" "${LEFT_URL}" "${TITLE}"

POL_SetupWindow_Init

# Presentation
POL_SetupWindow_presentation \
    "${TITLE}" \
    "${GAME_EDITOR}" \
    "${GAME_URL}" \
    "Grolm" \
    "${PREFIX}"

# Select Install Method
POL_SetupWindow_InstallMethod "LOCAL,DOWNLOAD"

# Installation
if [ "${INSTALL_METHOD}" = "LOCAL" ]
then
    cd "${HOME}"
    POL_SetupWindow_browse "$(eval_gettext 'Please select the installation file to run.')" "${TITLE} installation"
    SETUP_FILE="${APP_ANSWER}"
else
    cd "${POL_System_TmpDir}"
    POL_Download "${SETUP_URL}"
    SETUP_FILE="${POL_System_TmpDir}/${SETUP}"
fi

[ -f "${SETUP_FILE}" ] || exit 1

# Certificate installation
POL_SetupWindow_question \
    "$(eval_gettext "Do you want to add 'Thawte Code Signing CA - G2' to your system ?\n\nIt is required to run the game launcher but require root privileges.")" \
    "${TITLE}"

if [ "${APP_ANSWER}" = "TRUE" ]
then
    ctest='xXFnbqxM25DrUaUaYgfQvmoARzxyL+xPYT5zhc5aCre6wBwTdeMiOSjdbR0JRp1P'

    # Download certificate
    cd "${POL_System_TmpDir}"
    POL_Download "${CERT_URL}" "cac50bdc03d3940cda1819874bf104e0"

    if [ -d /usr/share/ca-certificates ] && [ -f /etc/ca-certificates.conf ]
    then
    # Debian based distribs and Arch

        # Test if ca certificate used by launcher is already installed, if not propose
        # the root command to install it
        cert="$(grep -rl "${ctest}" /usr/share/ca-certificates)"
        cert=${cert#/usr/share/ca-certificates/}

        # Test
        if ! grep -q "^[[:space:]]*${cert}$" /etc/ca-certificates.conf
        then
            # Generate the Certificate setup script
            cat <<EOF > teso-setup-ca.sh
#!/bin/bash
mkdir -p /usr/share/ca-certificates/custom
cp "${POL_System_TmpDir}/${CERT}" /usr/share/ca-certificates/custom/Thawte_CS_CA_G2.crt
grep -q custom/Thawte_CS_CA_G2.crt /etc/ca-certificates.conf \
    || echo "custom/Thawte_CS_CA_G2.crt" >> /etc/ca-certificates.conf
update-ca-certificates
EOF
            POL_Call POL_Function_RootCommand "sudo bash ${POL_System_TmpDir}/teso-setup-ca.sh; exit"
        fi
    elif [ -d /etc/pki/tls/certs ]
    then
    # Fedora based distribs
    if ! grep -ql "${ctest}" /etc/pki/tls/certs/*
    then
            POL_Call POL_Function_RootCommand "sudo bash cp \"${POL_System_TmpDir}/${CERT}\" /etc/pki/tls/certs/Thawte_CS_CA_G2.pem; exit"
    fi
    else
        cp "${POL_System_TmpDir}/${CERT}" ${HOME}
        POL_SetupWindow_message \
            "$(eval_gettext "Don't know how to install certificates on your systems.\n\nIf the launcher does not start, please refer to your system documentation to manually install ~/ThawteCSG2.cer")" \
            "${TITLE}"
    fi
fi

# Create Prefix
POL_System_SetArch "x86"
POL_Wine_SelectPrefix "${PREFIX}"
POL_Wine_PrefixCreate "${WINEVERSION}"

# Dependencies
POL_Call POL_Install_vcrun2010

# Asking about memory size of graphic card
POL_SetupWindow_VMS ${GAME_VMS}

# Set Graphic Card information keys for wine
POL_Wine_SetVideoDriver

# Point My Documents to Documents and create default configuration for OPENGL
mkdir -p "${HOME}/Documents/Elder Scrolls Online/live"{,eu}
cat <<EOF > "${HOME}/Documents/Elder Scrolls Online/live/UserSettings.txt"
SET GraphicsDriver.7 "OPENGL"
EOF
cp "${HOME}/Documents/Elder Scrolls Online"/live{,eu}/UserSettings.txt
rm -rf "${WINEPREFIX}/drive_c/users/${USER}/My Documents"
ln -sf "${HOME}/Documents" "${WINEPREFIX}/drive_c/users/${USER}/My Documents"


# Setup
POL_SetupWindow_message \
    "$(eval_gettext "Follow default setup up to 'Installation Options' screen, then:\n 1. Select your region.\n 2. Leave only checked DirectX box.")" \
    "${TITLE}"

POL_Wine_WaitBefore "${TITLE}"
POL_Wine start /unix "${SETUP_FILE}"
sleep 5
# Wait for the Setup to exit. It is a dirty way to do it but POL_Wine without
# start /unix never exit. And with it the POL_Wine_WaitExit method does not work
# with the new eso setup either.
while ps -C "${SETUP}" && ! ps -C "Bethesda.net_Launcher.exe"
do
    echo "Waiting for ${SETUP_FILE} process to finish or Launcher to start."
    sleep 1
done

# Remove Windows desktop lnk
rm "${WINEPREFIX}/drive_c/users/${USER}/Desktop/${TITLE}"*.lnk

# Create Shortcut
POL_Shortcut \
    "Bethesda.net_Launcher.exe" \
    "${TITLE}" \
    "${TITLE}.png" \
    "" \
    "Game;RolePlaying;"

# Remove Temp Space
POL_System_TmpDelete
POL_SetupWindow_Close
exit 0



Edited by Grolm

Grolm Friday 4 April 2014 at 23:08
GrolmAnonymous

New version, switch to wine 1.7.15 and changes certificate installation to install it only in wine system registry instead of distribution certificates. This permit to install without root permission and do not depends on distribution certificate strategy.

#!/bin/bash
# Date : (2014-03-04 09-55)
# Last revision : (2014-04-04 22:43)
# Wine version used : 1.7.15
# Distribution used to test : Xubuntu 13.10, Fedora 20
# Author : Grolm

# CHANGELOG
#
# --- 2014-03-10 ---
# Add UserSettings creation for liveeu beside live in Documents
# Point to temporary hosted top.png and left.png (googleusercontent.com)
#
# --- 2014-03-11 ---
# Add missing eval_gettext
#
# Move Prefix creation after setup download/selection
#
# Remove POL_Wine_WaitExit and start /unix
#
# Remove png icon extraction
#
# Add a check before CA installation on /usr/share/ca-certificates and
# /etc/ca-certificates.conf. Ask for CA manual installation if test failed.
#
# --- 2014-03-21 ---
# Point to realease Installer instead of Beta one.
#
# Move Certificate installation before setup as setup now directly runs the launcher
#
# Certificate installation download the certificate from tbs.
#
# Dirty hack to wait for setup to finish but do not wait for launcher.
#
# Minor text improvments
#
# --- 2014-04-01 ---
# Udpate Certificate installation to support fedora based distributions
#
# --- 2014-04-04 ---
# Switch to wine 1.7.15
# Install certificate in prefix registry instead on linux system
#

[ "$PLAYONLINUX" = "" ] && exit 0
source "$PLAYONLINUX/lib/sources"

TITLE="The Elder Scrolls Online"
PREFIX="TESO"
WINEVERSION="1.7.15"
AUTHOR="Grolm"
GAME_VMS="512"
GAME_URL="http://elderscrollsonline.com"
GAME_EDITOR="Bethesda (Zenimax online)"
SETUP="Install_ESO.exe"
SETUP_URL="https://elderscrolls-a.akamaihd.net/products/BNA_Launcher/${SETUP}"

# URL to be changed
TOP_URL="http://lh6.googleusercontent.com/-YhPqIt5GdOs/Ux3mhn6cpuI/AAAAAAAAAYI/IQovGw1Ce1o/s64-no/top.png"
LEFT_URL="http://lh4.googleusercontent.com/-7GSUakQgwGQ/Ux3mpPf7MjI/AAAAAAAAAYQ/dA8VT2SSr8I/w150-h356-no/left.png"

# Create Temp space
POL_System_TmpCreate "${PREFIX}"
cd "${POL_System_TmpDir}"

POL_GetSetupImages "${TOP_URL}" "${LEFT_URL}" "${TITLE}"

POL_SetupWindow_Init

# Presentation
POL_SetupWindow_presentation \
    "${TITLE}" \
    "${GAME_EDITOR}" \
    "${GAME_URL}" \
    "Grolm" \
    "${PREFIX}"

# Select Install Method
POL_SetupWindow_InstallMethod "LOCAL,DOWNLOAD"

# Installation
if [ "${INSTALL_METHOD}" = "LOCAL" ]
then
    cd "${HOME}"
    POL_SetupWindow_browse "$(eval_gettext 'Please select the installation file to run.')" "${TITLE} installation"
    SETUP_FILE="${APP_ANSWER}"
else
    cd "${POL_System_TmpDir}"
    POL_Download "${SETUP_URL}"
    SETUP_FILE="${POL_System_TmpDir}/${SETUP}"
fi

[ -f "${SETUP_FILE}" ] || exit 1

# Create Prefix
POL_System_SetArch "x86"
POL_Wine_SelectPrefix "${PREFIX}"
POL_Wine_PrefixCreate "${WINEVERSION}"

# Dependencies
POL_Call POL_Install_vcrun2010

# Asking about memory size of graphic card
POL_SetupWindow_VMS ${GAME_VMS}

# Set Graphic Card information keys for wine
POL_Wine_SetVideoDriver


# Certificate installation
cd "${POL_System_TmpDir}"
cat <<EOF > cert.reg
[HKEY_LOCAL_MACHINE\Software\Microsoft\SystemCertificates\My\Certificates\808D62642B7D1C4A9A83FD667F7A2A9D243FB1C7]
"Blob"=hex:03,00,00,00,01,00,00,00,14,00,00,00,80,8d,62,64,2b,7d,1c,4a,9a,83,\
  fd,66,7f,7a,2a,9d,24,3f,b1,c7,20,00,00,00,01,00,00,00,a0,04,00,00,30,82,04,\
  9c,30,82,03,84,a0,03,02,01,02,02,10,47,97,4d,78,73,a5,bc,ab,0d,2f,b3,70,19,\
  2f,ce,5e,30,0d,06,09,2a,86,48,86,f7,0d,01,01,05,05,00,30,81,a9,31,0b,30,09,\
  06,03,55,04,06,13,02,55,53,31,15,30,13,06,03,55,04,0a,13,0c,74,68,61,77,74,\
  65,2c,20,49,6e,63,2e,31,28,30,26,06,03,55,04,0b,13,1f,43,65,72,74,69,66,69,\
  63,61,74,69,6f,6e,20,53,65,72,76,69,63,65,73,20,44,69,76,69,73,69,6f,6e,31,\
  38,30,36,06,03,55,04,0b,13,2f,28,63,29,20,32,30,30,36,20,74,68,61,77,74,65,\
  2c,20,49,6e,63,2e,20,2d,20,46,6f,72,20,61,75,74,68,6f,72,69,7a,65,64,20,75,\
  73,65,20,6f,6e,6c,79,31,1f,30,1d,06,03,55,04,03,13,16,74,68,61,77,74,65,20,\
  50,72,69,6d,61,72,79,20,52,6f,6f,74,20,43,41,30,1e,17,0d,31,30,30,32,30,38,\
  30,30,30,30,30,30,5a,17,0d,32,30,30,32,30,37,32,33,35,39,35,39,5a,30,4a,31,\
  0b,30,09,06,03,55,04,06,13,02,55,53,31,15,30,13,06,03,55,04,0a,13,0c,54,68,\
  61,77,74,65,2c,20,49,6e,63,2e,31,24,30,22,06,03,55,04,03,13,1b,54,68,61,77,\
  74,65,20,43,6f,64,65,20,53,69,67,6e,69,6e,67,20,43,41,20,2d,20,47,32,30,82,\
  01,22,30,0d,06,09,2a,86,48,86,f7,0d,01,01,01,05,00,03,82,01,0f,00,30,82,01,\
  0a,02,82,01,01,00,b7,8b,cf,75,5b,9f,25,da,7e,39,b0,93,db,38,d3,a9,23,d0,82,\
  fa,e9,24,7e,5c,0b,8e,83,f8,e6,7a,59,e6,a3,c5,98,a7,99,d2,44,ff,00,a6,a5,39,\
  04,8a,da,29,88,ea,db,a2,f3,1c,99,15,26,c2,b1,f4,fc,e1,0c,47,a9,09,11,06,0a,\
  20,92,b9,c7,a0,04,8c,5c,94,19,ab,5b,25,2c,1d,62,7e,70,0d,ce,61,6c,dd,2b,82,\
  c9,ce,5d,48,5f,f7,c2,be,bc,41,23,1e,4f,29,5d,d7,4f,bc,f4,c5,2a,fc,63,e6,7c,\
  26,4e,99,a7,79,41,9e,10,4a,7a,79,c9,c6,86,f7,86,95,d2,26,ce,3c,18,2a,d6,7c,\
  ce,af,cd,ad,bb,f7,82,2c,70,26,37,45,e5,0f,47,22,c6,01,28,bd,2e,83,5c,6a,a4,\
  47,c1,e7,d0,d8,6b,81,46,3f,21,17,f5,07,c5,43,5a,a6,67,2c,b8,7b,60,11,b5,83,\
  ee,f5,74,0a,72,71,44,3d,58,fe,e8,1a,ab,38,c3,59,db,7f,6e,38,7d,76,c7,72,69,\
  98,36,96,57,d3,66,1c,d2,54,91,04,2e,54,19,b0,dc,3d,b5,22,5e,86,d5,2a,7e,20,\
  df,5d,e6,7a,b1,65,fe,c5,02,4e,31,2d,02,03,01,00,01,a3,82,01,1c,30,82,01,18,\
  30,12,06,03,55,1d,13,01,01,ff,04,08,30,06,01,01,ff,02,01,00,30,34,06,03,55,\
  1d,1f,04,2d,30,2b,30,29,a0,27,a0,25,86,23,68,74,74,70,3a,2f,2f,63,72,6c,2e,\
  74,68,61,77,74,65,2e,63,6f,6d,2f,54,68,61,77,74,65,50,43,41,2e,63,72,6c,30,\
  0e,06,03,55,1d,0f,01,01,ff,04,04,03,02,01,06,30,32,06,08,2b,06,01,05,05,07,\
  01,01,04,26,30,24,30,22,06,08,2b,06,01,05,05,07,30,01,86,16,68,74,74,70,3a,\
  2f,2f,6f,63,73,70,2e,74,68,61,77,74,65,2e,63,6f,6d,30,1d,06,03,55,1d,25,04,\
  16,30,14,06,08,2b,06,01,05,05,07,03,02,06,08,2b,06,01,05,05,07,03,03,30,29,\
  06,03,55,1d,11,04,22,30,20,a4,1e,30,1c,31,1a,30,18,06,03,55,04,03,13,11,56,\
  65,72,69,53,69,67,6e,4d,50,4b,49,2d,32,2d,31,30,30,1d,06,03,55,1d,0e,04,16,\
  04,14,d4,0d,65,3f,7a,bd,34,c6,fe,47,e7,4c,0d,c0,bd,f2,de,15,ab,71,30,1f,06,\
  03,55,1d,23,04,18,30,16,80,14,7b,5b,45,cf,af,ce,cb,7a,fd,31,92,1a,6a,b6,f3,\
  46,eb,57,48,50,30,0d,06,09,2a,86,48,86,f7,0d,01,01,05,05,00,03,82,01,01,00,\
  56,fe,53,5c,e1,c7,9e,bc,a7,ed,7e,53,6d,6a,14,4b,51,8c,40,5e,80,5f,aa,a4,e8,\
  2f,ef,38,c8,04,c9,ca,3e,cf,df,3a,58,4e,b0,d4,b6,63,c5,29,57,fa,02,05,9a,45,\
  4d,68,db,2a,1b,d4,34,3d,9f,00,c3,5a,cb,95,49,a5,6e,e1,b0,c5,fc,41,4d,41,4a,\
  6f,d3,77,c8,d7,38,8d,e4,19,de,18,f3,1f,15,65,83,6d,45,0c,53,f9,0a,9a,2e,a5,\
  5d,bf,6f,32,81,18,92,19,6a,55,00,ad,63,1c,52,06,7e,55,d9,29,68,ae,4a,7c,18,\
  9a,79,88,6b,23,23,d8,27,38,2a,29,87,76,ca,fb,c7,b6,62,23,1f,ed,7a,56,4c,dd,\
  9c,32,5b,f5,3d,0c,46,18,95,3b,2a,23,68,83,64,41,d9,00,6d,0f,19,24,15,68,72,\
  bd,c5,71,67,6e,ac,4c,db,90,eb,51,a5,1a,62,07,d0,be,6a,00,47,3c,72,2f,ec,4f,\
  61,3e,73,85,ce,5a,0a,b7,ba,c0,1c,13,75,e3,22,39,28,dd,6d,1d,09,46,9d,4f,ba,\
  e8,40,81,91,c6,a4,ce,94,72,1b,01,cf,2a,6e,15,67,95,89,ae,7d,b7,b7,cd,f9,0a,\
  3d,75,b6,6b,3c,25
EOF
regedit cert.reg

# Point My Documents to Documents and create default configuration for OPENGL
mkdir -p "${HOME}/Documents/Elder Scrolls Online/live"{,eu}
cat <<EOF > "${HOME}/Documents/Elder Scrolls Online/live/UserSettings.txt"
SET GraphicsDriver.7 "OPENGL"
EOF
cp "${HOME}/Documents/Elder Scrolls Online"/live{,eu}/UserSettings.txt
rm -rf "${WINEPREFIX}/drive_c/users/${USER}/My Documents"
ln -sf "${HOME}/Documents" "${WINEPREFIX}/drive_c/users/${USER}/My Documents"

# Setup
POL_SetupWindow_message \
    "$(eval_gettext "Follow default setup up to 'Installation Options' screen, then:\n 1. Select your region.\n 2. Leave only checked DirectX box.")" \
    "${TITLE}"

POL_Wine_WaitBefore "${TITLE}"
POL_Wine start /unix "${SETUP_FILE}"
sleep 5
# Wait for the Setup to exit. It is a dirty way to do it but POL_Wine without
# start /unix never exit. And with it the POL_Wine_WaitExit method does not work
# with the new eso setup either.
while ps -C "${SETUP}" && ! ps -C "Bethesda.net_Launcher.exe"
do
    echo "Waiting for ${SETUP_FILE} process to finish or Launcher to start."
    sleep 1
done

# Remove Windows desktop lnk
rm "${WINEPREFIX}/drive_c/users/${USER}/Desktop/${TITLE}"*.lnk

# Create Shortcut
POL_Shortcut \
    "Bethesda.net_Launcher.exe" \
    "${TITLE}" \
    "${TITLE}.png" \
    "" \
    "Game;RolePlaying;"

# Remove Temp Space
POL_System_TmpDelete
POL_SetupWindow_Close
exit 0

Edited by Grolm

petch Friday 4 April 2014 at 23:36
petch

Hi,
That's great, it makes the script much more practical now!

As a last test, since I tend to always forget about some things, I ran the ScriptChecker script over it, and it catched two more things:

- The lack of call to POL_Debug_Init; You should have such statement, with no arguments, right after POL_SetupWindow_Init, to enable integrated debugger support;
- The script recommended longer prefix name too, to make name collisions less likely.

Anyway, your script is now so close to pass all recommendations that I think you can submit it for inclusion to the repository without another round of review here :)

Regards,
Pierre.

Grolm Monday 7 April 2014 at 12:06
GrolmAnonymous

Thank you for your review.

Lansett provided me with two lines to add to the settings that make the game more stable.

SET RequestedNumThreads "0"
SET BACKGROUND_AUDIO "1"

I'll try to test tonight and submit my script.

Regards

#!/bin/bash
# Date : (2014-03-04 09:55)
# Last revision : (2014-04-07 12:13)
# Wine version used : 1.7.15
# Distribution used to test : Xubuntu 13.10
# Author : Grolm

# CHANGELOG
#
# --- 2014-03-10 ---
# Add UserSettings creation for liveeu beside live in Documents
# Point to temporary hosted top.png and left.png (googleusercontent.com)
#
# --- 2014-03-11 ---
# Add missing eval_gettext
#
# Move Prefix creation after setup download/selection
#
# Remove POL_Wine_WaitExit and start /unix
#
# Remove png icon extraction
#
# Add a check before CA installation on /usr/share/ca-certificates and
# /etc/ca-certificates.conf. Ask for CA manual installation if test failed.
#
# --- 2014-03-21 ---
# Point to realease Installer instead of Beta one.
#
# Move Certificate installation before setup as setup now directly runs the launcher
#
# Certificate installation download the certificate from tbs.
#
# Dirty hack to wait for setup to finish but do not wait for launcher.
#
# Minor text improvments
#
# --- 2014-04-01 ---
# Udpate Certificate installation to support fedora based distributions
#
# --- 2014-04-04 ---
# Switch to wine 1.7.15
# Install certificate in prefix registry instead on linux system
#
# --- 2014-04-07 ---
# Add POL_Debug_Init after POL_SetupWindow_Init
# Change Prefix from TESO to TheElderScrollsOnline
# Change default user settings to have a more stable game
#

[ "$PLAYONLINUX" = "" ] && exit 0
source "$PLAYONLINUX/lib/sources"

TITLE="The Elder Scrolls Online"
PREFIX="TheElderScrollsOnline"
WINEVERSION="1.7.15"
AUTHOR="Grolm"
GAME_VMS="512"
GAME_URL="http://elderscrollsonline.com"
GAME_EDITOR="Bethesda (Zenimax online)"
SETUP="Install_ESO.exe"
SETUP_URL="https://elderscrolls-a.akamaihd.net/products/BNA_Launcher/${SETUP}"

# URL to be changed
TOP_URL="http://lh6.googleusercontent.com/-YhPqIt5GdOs/Ux3mhn6cpuI/AAAAAAAAAYI/IQovGw1Ce1o/s64-no/top.png"
LEFT_URL="http://lh4.googleusercontent.com/-7GSUakQgwGQ/Ux3mpPf7MjI/AAAAAAAAAYQ/dA8VT2SSr8I/w150-h356-no/left.png"

# Create Temp space
POL_System_TmpCreate "${PREFIX}"
cd "${POL_System_TmpDir}"

POL_GetSetupImages "${TOP_URL}" "${LEFT_URL}" "${TITLE}"

POL_SetupWindow_Init
POL_Debug_Init

# Presentation
POL_SetupWindow_presentation \
    "${TITLE}" \
    "${GAME_EDITOR}" \
    "${GAME_URL}" \
    "Grolm" \
    "${PREFIX}"

# Select Install Method
POL_SetupWindow_InstallMethod "LOCAL,DOWNLOAD"

# Installation
if [ "${INSTALL_METHOD}" = "LOCAL" ]
then
    cd "${HOME}"
    POL_SetupWindow_browse "$(eval_gettext 'Please select the installation file to run.')" "${TITLE} installation"
    SETUP_FILE="${APP_ANSWER}"
else
    cd "${POL_System_TmpDir}"
    POL_Download "${SETUP_URL}"
    SETUP_FILE="${POL_System_TmpDir}/${SETUP}"
fi

[ -f "${SETUP_FILE}" ] || exit 1

# Create Prefix
POL_System_SetArch "x86"
POL_Wine_SelectPrefix "${PREFIX}"
POL_Wine_PrefixCreate "${WINEVERSION}"

# Dependencies
POL_Call POL_Install_vcrun2010

# Asking about memory size of graphic card
POL_SetupWindow_VMS ${GAME_VMS}

# Set Graphic Card information keys for wine
POL_Wine_SetVideoDriver


# Certificate installation
cd "${POL_System_TmpDir}"
cat <<EOF > cert.reg
[HKEY_LOCAL_MACHINE\Software\Microsoft\SystemCertificates\My\Certificates\808D62642B7D1C4A9A83FD667F7A2A9D243FB1C7]
"Blob"=hex:03,00,00,00,01,00,00,00,14,00,00,00,80,8d,62,64,2b,7d,1c,4a,9a,83,\
  fd,66,7f,7a,2a,9d,24,3f,b1,c7,20,00,00,00,01,00,00,00,a0,04,00,00,30,82,04,\
  9c,30,82,03,84,a0,03,02,01,02,02,10,47,97,4d,78,73,a5,bc,ab,0d,2f,b3,70,19,\
  2f,ce,5e,30,0d,06,09,2a,86,48,86,f7,0d,01,01,05,05,00,30,81,a9,31,0b,30,09,\
  06,03,55,04,06,13,02,55,53,31,15,30,13,06,03,55,04,0a,13,0c,74,68,61,77,74,\
  65,2c,20,49,6e,63,2e,31,28,30,26,06,03,55,04,0b,13,1f,43,65,72,74,69,66,69,\
  63,61,74,69,6f,6e,20,53,65,72,76,69,63,65,73,20,44,69,76,69,73,69,6f,6e,31,\
  38,30,36,06,03,55,04,0b,13,2f,28,63,29,20,32,30,30,36,20,74,68,61,77,74,65,\
  2c,20,49,6e,63,2e,20,2d,20,46,6f,72,20,61,75,74,68,6f,72,69,7a,65,64,20,75,\
  73,65,20,6f,6e,6c,79,31,1f,30,1d,06,03,55,04,03,13,16,74,68,61,77,74,65,20,\
  50,72,69,6d,61,72,79,20,52,6f,6f,74,20,43,41,30,1e,17,0d,31,30,30,32,30,38,\
  30,30,30,30,30,30,5a,17,0d,32,30,30,32,30,37,32,33,35,39,35,39,5a,30,4a,31,\
  0b,30,09,06,03,55,04,06,13,02,55,53,31,15,30,13,06,03,55,04,0a,13,0c,54,68,\
  61,77,74,65,2c,20,49,6e,63,2e,31,24,30,22,06,03,55,04,03,13,1b,54,68,61,77,\
  74,65,20,43,6f,64,65,20,53,69,67,6e,69,6e,67,20,43,41,20,2d,20,47,32,30,82,\
  01,22,30,0d,06,09,2a,86,48,86,f7,0d,01,01,01,05,00,03,82,01,0f,00,30,82,01,\
  0a,02,82,01,01,00,b7,8b,cf,75,5b,9f,25,da,7e,39,b0,93,db,38,d3,a9,23,d0,82,\
  fa,e9,24,7e,5c,0b,8e,83,f8,e6,7a,59,e6,a3,c5,98,a7,99,d2,44,ff,00,a6,a5,39,\
  04,8a,da,29,88,ea,db,a2,f3,1c,99,15,26,c2,b1,f4,fc,e1,0c,47,a9,09,11,06,0a,\
  20,92,b9,c7,a0,04,8c,5c,94,19,ab,5b,25,2c,1d,62,7e,70,0d,ce,61,6c,dd,2b,82,\
  c9,ce,5d,48,5f,f7,c2,be,bc,41,23,1e,4f,29,5d,d7,4f,bc,f4,c5,2a,fc,63,e6,7c,\
  26,4e,99,a7,79,41,9e,10,4a,7a,79,c9,c6,86,f7,86,95,d2,26,ce,3c,18,2a,d6,7c,\
  ce,af,cd,ad,bb,f7,82,2c,70,26,37,45,e5,0f,47,22,c6,01,28,bd,2e,83,5c,6a,a4,\
  47,c1,e7,d0,d8,6b,81,46,3f,21,17,f5,07,c5,43,5a,a6,67,2c,b8,7b,60,11,b5,83,\
  ee,f5,74,0a,72,71,44,3d,58,fe,e8,1a,ab,38,c3,59,db,7f,6e,38,7d,76,c7,72,69,\
  98,36,96,57,d3,66,1c,d2,54,91,04,2e,54,19,b0,dc,3d,b5,22,5e,86,d5,2a,7e,20,\
  df,5d,e6,7a,b1,65,fe,c5,02,4e,31,2d,02,03,01,00,01,a3,82,01,1c,30,82,01,18,\
  30,12,06,03,55,1d,13,01,01,ff,04,08,30,06,01,01,ff,02,01,00,30,34,06,03,55,\
  1d,1f,04,2d,30,2b,30,29,a0,27,a0,25,86,23,68,74,74,70,3a,2f,2f,63,72,6c,2e,\
  74,68,61,77,74,65,2e,63,6f,6d,2f,54,68,61,77,74,65,50,43,41,2e,63,72,6c,30,\
  0e,06,03,55,1d,0f,01,01,ff,04,04,03,02,01,06,30,32,06,08,2b,06,01,05,05,07,\
  01,01,04,26,30,24,30,22,06,08,2b,06,01,05,05,07,30,01,86,16,68,74,74,70,3a,\
  2f,2f,6f,63,73,70,2e,74,68,61,77,74,65,2e,63,6f,6d,30,1d,06,03,55,1d,25,04,\
  16,30,14,06,08,2b,06,01,05,05,07,03,02,06,08,2b,06,01,05,05,07,03,03,30,29,\
  06,03,55,1d,11,04,22,30,20,a4,1e,30,1c,31,1a,30,18,06,03,55,04,03,13,11,56,\
  65,72,69,53,69,67,6e,4d,50,4b,49,2d,32,2d,31,30,30,1d,06,03,55,1d,0e,04,16,\
  04,14,d4,0d,65,3f,7a,bd,34,c6,fe,47,e7,4c,0d,c0,bd,f2,de,15,ab,71,30,1f,06,\
  03,55,1d,23,04,18,30,16,80,14,7b,5b,45,cf,af,ce,cb,7a,fd,31,92,1a,6a,b6,f3,\
  46,eb,57,48,50,30,0d,06,09,2a,86,48,86,f7,0d,01,01,05,05,00,03,82,01,01,00,\
  56,fe,53,5c,e1,c7,9e,bc,a7,ed,7e,53,6d,6a,14,4b,51,8c,40,5e,80,5f,aa,a4,e8,\
  2f,ef,38,c8,04,c9,ca,3e,cf,df,3a,58,4e,b0,d4,b6,63,c5,29,57,fa,02,05,9a,45,\
  4d,68,db,2a,1b,d4,34,3d,9f,00,c3,5a,cb,95,49,a5,6e,e1,b0,c5,fc,41,4d,41,4a,\
  6f,d3,77,c8,d7,38,8d,e4,19,de,18,f3,1f,15,65,83,6d,45,0c,53,f9,0a,9a,2e,a5,\
  5d,bf,6f,32,81,18,92,19,6a,55,00,ad,63,1c,52,06,7e,55,d9,29,68,ae,4a,7c,18,\
  9a,79,88,6b,23,23,d8,27,38,2a,29,87,76,ca,fb,c7,b6,62,23,1f,ed,7a,56,4c,dd,\
  9c,32,5b,f5,3d,0c,46,18,95,3b,2a,23,68,83,64,41,d9,00,6d,0f,19,24,15,68,72,\
  bd,c5,71,67,6e,ac,4c,db,90,eb,51,a5,1a,62,07,d0,be,6a,00,47,3c,72,2f,ec,4f,\
  61,3e,73,85,ce,5a,0a,b7,ba,c0,1c,13,75,e3,22,39,28,dd,6d,1d,09,46,9d,4f,ba,\
  e8,40,81,91,c6,a4,ce,94,72,1b,01,cf,2a,6e,15,67,95,89,ae,7d,b7,b7,cd,f9,0a,\
  3d,75,b6,6b,3c,25
EOF
regedit cert.reg

# Point My Documents to Documents and create default configuration for OPENGL
mkdir -p "${HOME}/Documents/Elder Scrolls Online/live"{,eu}
cat <<EOF > "${HOME}/Documents/Elder Scrolls Online/live/UserSettings.txt"
SET GraphicsDriver.7 "OPENGL"
SET RequestedNumThreads "0"
SET BACKGROUND_AUDIO "1"
EOF
cp "${HOME}/Documents/Elder Scrolls Online"/live{,eu}/UserSettings.txt
rm -rf "${WINEPREFIX}/drive_c/users/${USER}/My Documents"
ln -sf "${HOME}/Documents" "${WINEPREFIX}/drive_c/users/${USER}/My Documents"

# Setup
POL_SetupWindow_message \
    "$(eval_gettext "Follow default setup up to 'Installation Options' screen, then:\n 1. Select your region.\n 2. Leave only checked DirectX box.")" \
    "${TITLE}"

POL_Wine_WaitBefore "${TITLE}"
POL_Wine start /unix "${SETUP_FILE}"
sleep 5
# Wait for the Setup to exit. It is a dirty way to do it but POL_Wine without
# start /unix never exit. And with it the POL_Wine_WaitExit method does not work
# with the new eso setup either.
while ps -C "${SETUP}" && ! ps -C "Bethesda.net_Launcher.exe"
do
    echo "Waiting for ${SETUP_FILE} process to finish or Launcher to start."
    sleep 1
done

# Remove Windows desktop lnk
rm "${WINEPREFIX}/drive_c/users/${USER}/Desktop/${TITLE}"*.lnk

# Create Shortcut
POL_Shortcut \
    "Bethesda.net_Launcher.exe" \
    "${TITLE}" \
    "${TITLE}.png" \
    "" \
    "Game;RolePlaying;"

# Remove Temp Space
POL_System_TmpDelete
POL_SetupWindow_Close
exit 0


Edited by Grolm

Grolm Tuesday 8 April 2014 at 11:06
GrolmAnonymous

Tests were successful yesterday night so I submitted my script.

Top and left images url point to a google post. Would I have changed them to point somewhere else.

Images are also available here:

http://dl.free.fr/huFdX9ZkG


petch Tuesday 8 April 2014 at 20:05
petch

multiseat_ESO Wednesday 9 April 2014 at 16:57
multiseat_ESOAnonymous

Grolm, I'm very happy to see that this script made it up so soon! Thank you for your hard work! I have installed it on my multiseat ESO setup, and the game is working on both seats.

Here's my concern: in switching the game from Windows/Direct3D to Linux/OpenGL, I took about a 30% hit in framerate. I'm wondering if our workaround to the 'memory leak' problem (SET RequestedNumThreads "0") is contributing to this performance loss, or if perhaps it is Wine or OpenGL itself (or maybe my two GTX 660 SC's don't do OpenGL very well).

I would love to see Linux ESO become viable for the mainstream gamer. I hope a greater mind than myself can figure out how to wring better performance out of it.

Also, when my character loads into the game world the Awesomium process crashes. Game still seems to run fine despite this.
Grolm Wednesday 9 April 2014 at 23:25
GrolmAnonymous

Hi,

I have approximately the same loss of framerate with my 460 with or without

SET RequestedNumThreads "0"

The scrolling in inventory is not as smouth as in windows.

I'll keep this post updated if I found some improvements.

I also want to test the windows/opengl mode to know if some performances issue are not related to their opengl implementation.

Grolm Wednesday 9 April 2014 at 23:44
GrolmAnonymous

It seams that there is also a frame rate drop on windows with opengl.

It would be interesting to see what settings are used on mac by default but I have no mac available.
MasterGberry Thursday 10 April 2014 at 3:46
MasterGberryAnonymous

Hi.  I seem to be receiving the following error when trying to install this on PlayOnLinux:

Error in POL_Shortcut
Binary not found: Bethesda.net_Launcher.exe
Have you installed the program to the default location?

Is this thing live at the moment?  I chose the download option and then followed the instructions on screen.  I got to the screen saying "Only select directX", hit next, a popup appeared, went to 100%, and then this error came up.

Thanks for any info on how to fix this problem.
Grolm Thursday 10 April 2014 at 9:54
GrolmAnonymous

You might have a problem with the installer download, try to download it manually.

https://elderscrolls-a.akamaihd.net/products/BNA_Launcher/Install_ESO.exe

Current md5sum is f723da8b0a0046746cb0bfa1963be39f


Grolm Thursday 10 April 2014 at 10:10
GrolmAnonymous

Performances are also an issue on MacOS native port :

http://tamrielfoundry.com/topic/mac-client-progress-update/page/11/

It seams that the CPU is the main bottleneck not the GPU.
Grolm Thursday 10 April 2014 at 13:36
GrolmAnonymous

http://forums.elderscrollsonline.com/discussion/66233/unacceptable-frame-rates-and-gpu-usage

This site allows content generated by members, and we promptly remove any content that infringes copyright according to our Terms of Service. To report copyright infringement, please send a notice to dmca-notice@playonlinux.com