Das Forum

[Script] 3D Train Studio

Autor Antworten
StefanWerner Thursday 5 March 2015 at 18:53
StefanWernerAnonymous

Hi,

I am the developer of the 3D Train Studio, a software for planning and simulating model railroad layouts on the computer. The software is available as a free standard version and as a commercial professional version. I want to share the installation script for downloading and installing the free standard version.

The application makes heavy use of Direct3D features, so errors might occur on systems without a proper graphics card/driver.

#!/bin/bash
# Date : (2015-03-05 09-05)
# Last revision : (2015-03-05 09-05)
# Wine version used : 1.6.2
# Distribution used to test : Ubuntu 14.04 LTS
# Author : Stefan Werner
[ "$PLAYONLINUX" = "" ] && exit 0
source "$PLAYONLINUX/lib/sources"

# Define constants
TITLE="3D Train Studio"
PREFIX="TrainStudio"

# Start installation
POL_SetupWindow_Init
POL_Debug_Init
POL_SetupWindow_presentation "$TITLE" "Stefan Werner" "http://www.3d-train.com" "Stefan Werner" "$PREFIX"

# Prepare the wine config
POL_System_SetArch "x86"

POL_Wine_SelectPrefix "$PREFIX"
POL_Wine_PrefixCreate

Set_OS "win7"
POL_Wine_Direct3D "UseGLSL" "disabled"

POL_SetupWindow_wait "$(eval_gettext 'Please wait while installing prerequisites.')" "$TITLE"
POL_Call POL_Install_tahoma2

# Install the main application, either by using a local setup file or by downloading
# the latest setup from the web.
POL_SetupWindow_InstallMethod "LOCAL,DOWNLOAD"
if [ "$INSTALL_METHOD" = "LOCAL" ]
then
    POL_SetupWindow_browse "$(eval_gettext 'Please select the setup file to run.')" "$TITLE"
    POL_Wine_WaitBefore "$TITLE"
    POL_Wine "$APP_ANSWER"
elif [ "$INSTALL_METHOD" = "DOWNLOAD" ]
then
    POL_System_TmpCreate "$PREFIX"    
    cd "$POL_System_TmpDir"
    POL_Download "http://www.3d-modellbahn.de/files/client/SetupTrainStudio.exe"
    POL_Wine_WaitBefore "$TITLE"
    POL_Wine "$POL_System_TmpDir/SetupTrainStudio.exe"
    POL_System_TmpDelete
fi
 
# Finish installation
POL_Shortcut "ModellbahnStudio.exe" "$TITLE"
POL_SetupWindow_Close
exit

Here are some screenshots:

Note: The application is available in English and in German. The German title is "3D Modellbahn Studio".

I've tested the application on an Ubuntu 14.04 image. I don't have access to MacOS X, so I don't know if the app is compatible to PlayOnMac.

Kind regards,

Stefan

Editiert von: StefanWerner

petch Thursday 5 March 2015 at 19:23
petch

Hi Stefan,

My review of your script:

TITLE="$(eval_gettext '3D Train Studio')"

Don't translate $TITLE, it doesn't make much sense and to make it into the repository it has to match the name of the script anyway, so it must be a constant.

URL="$(eval_gettext 'http://www.3d-train.com')"

Don't translate URLs, doesn't make sense either

POL_SetupWindow_Init

Just after that you should also enable the embedded debugger:

POL_SetupWindow_Init
POL_Debug_Init
# Install mandatory prerequisites
POL_SetupWindow_wait "Please wait while installing prerequisites." "$TITLE"
POL_Call POL_Install_tahoma2

But on the other hand all user-oriented messages have to support translation!
The comment is redundant, so doesn't really improve readability...

POL_SetupWindow_browse "Please select the setup file to run." "$TITLE"
POL_SetupWindow_wait "Please wait while $TITLE is installed." "$TITLE"

Again, translate all user-oriented messages. You can also replace the latter with

POL_Wine_WaitBefore "$TITLE"

that will display this exact standard waiting message.

POL_Wine start /unix "$APP_ANSWER"
POL_Wine_WaitExit "$TITLE"

"start /unix" is not necessary 95% of the time, and it has a bad side effect: the application will not be automatically killed if the installation is aborted from PlayOnLinux/PlayOnMac. So if it's not necessary, remove it.
If it works, you may find that POL_Wine_WaitBefore is sufficient and that you can drop POL_Wine_WaitExit too.

Regards,

Pierre.

Editiert von: petch

StefanWerner Thursday 5 March 2015 at 20:52
StefanWernerAnonymous

Hi Pierre,

thank you for your first review. I've updated the script in the first post.

The application uses a different title/url per language. Is this not possible with PlayOnLinux?

I cannot find "POL_Wine_WaitBefore" in the list of functions, is this officially supported?

Kind regards,

Stefan

petch Thursday 5 March 2015 at 21:19
petch

thank you for your first review. I've updated the script in the first post.

Looks fine to me, I hope I'm not missing anything...

The application uses a different title/url per language. Is this not possible with PlayOnLinux?

$TITLE has to match the name of the script. You can use a different value in all the statements that need a window title though, if you think it's worth the trouble, and won't be more confusing than anything else.

I'm a bit reluctant to use gettext to translate resources like URL too. That mean that almost 50 people will try to translate it! Maybe you could provide an URL based on $POL_LANG, or even $LANG, if it doesn't add too much complexity to the install script...

I cannot find "POL_Wine_WaitBefore" in the list of functions, is this officially supported?

It exists since PoL/PoM 4.0.15, with a bugfix in 4.0.16, so it's been around for 3 years now, on all still supported versions.

Now that the documentation has been converted to a Wiki, it should be easier to update it ;)

Editiert von: petch

StefanWerner Thursday 5 March 2015 at 23:41
StefanWernerAnonymous

Hi Pierre,

thanks for the review. I don't need a translation of the title, so I keep it. I have submitted my script to the supported software area.

Kind regards,

Stefan