Jesteś tutaj

TablEdit

Informations

Creator Wiadmości
VolkerFroehlich

Warning

This installer is a beta script. It means that it might not work as expected

Informations

Platforms:
Downloads: 2581
Wine: System

Feedbacks

Description

Creating, editing, printing and listening to tablature and sheet music (standard notation) for guitar and other fretted, stringed instruments. Website.

Appdb.winehq.org 

Screenshots

Miniature

Source code

#!/usr/bin/env playonlinux-bash
[ "$PLAYONLINUX" = "" ] && exit 0
source "$PLAYONLINUX/lib/sources"
######################
# created Do 4. Mär 19:07:41 CET 2021
######################
# global parameters
TITLE="TablEdit"
PREFIX="tabledit"
AUTHOR="VolkerFroehlich"
EDITOR="Matthieu Leschemelle"
EDITOR_URL="https://tabledit.com/"
MD5=""
DOWNLOAD_RGSTRED_PATH="https://tabledit.com/secured/tev301.exe"
DOWNLOAD_PREVIEW_PATH="https://tabledit.com/download/tabled32.exe"
EXECUTABLE_FILE="tableditdemo.exe"
# automation parameters
USE_AUTOMATION="0" # 1: do not ask user 
USE_REGISTERED_VERSION=0 # 1: use registered version
[ "$USE_REGISTERED_VERSION" = "1" ] && EXECUTABLE_FILE="tabledit.exe"
######################
# FUNCTIONS
# ==============================================================
getRegisteredOrPreview()
# --------------------------------------------------------------
# Ask user for TablEdit registration info. 
# We require this for access to the secured download page
# and later to add registration data to the windows registry.
# Store input to variables
#  TE_USR: username
#  TE_PWD: password
# ==============================================================
{
TE_USR="" # with USE_AUTOMATION=1 you can predefine your
TE_PWD="" # tabledit registered user/password here
[ "$USE_AUTOMATION" = "1" ] && return 0
# -------------------
# ask user if registered
MSG="If you do have a user name and password we install the full version, else the preview demo.\n\nAre you a registered user?"
POL_SetupWindow_question "$(eval_gettext '$MSG')" "$TITLE"
POL_Debug_Message "# APP_ANSWER=$APP_ANSWER"
[ "$APP_ANSWER" = "TRUE" ] && USE_REGISTERED_VERSION=1 || USE_REGISTERED_VERSION=0
[ ! "$USE_REGISTERED_VERSION" = "1" ] && return 0 # install preview demo version
# -------------------
# use registered version
EXECUTABLE_FILE="tabledit.exe"
MSG="Username"
POL_SetupWindow_textbox "$(eval_gettext '$MSG')" "$TITLE" "$TE_USR"
[ -z "$APP_ANSWER" ] && return 0
TE_USR="$APP_ANSWER"
MSG="Password"
POL_SetupWindow_textbox "$(eval_gettext '$MSG')" "$TITLE" "$TE_PWD"
[ -z "$APP_ANSWER" ] && TE_USR="" && return 0
TE_PWD="$APP_ANSWER"
[ -z "$TE_USR" ] && POL_Debug_Fatal "# ERROR: User not defined"
[ -z "$TE_PWD" ] && POL_Debug_Fatal "# ERROR: Password not defined"
return 0 # use registered version
}
# ==============================================================
getVersionRemote()
# --------------------------------------------------------------
# check demo download page for latest version info
# and store this in variable
#    VERSION_REMOTE
# ==============================================================
{
POL_Debug_Message "# getVersionRemote"
VERSION_REMOTE=""
# - - - - - - - - - - - - - - - - - - - - -
# download html page for demo version
DOWNLOAD_PATH=$DOWNLOAD_PREVIEW_PATH
DOWNLOAD_DIR=$(dirname "$DOWNLOAD_PATH")
DOWNLOAD_FILE=$(basename "$DOWNLOAD_PATH")
DOWNLOAD_TMP=$POL_System_TmpDir
POL_Debug_Message "# download secured html page ($DOWNLOAD_DIR/$DOWNLOAD_FILE)"
wget -O $DOWNLOAD_TMP/TE_DWLD $DOWNLOAD_DIR/ 2>/dev/null;
RET_VAL="$?"
[ "$RET_VAL" -ne "0" ] && echo POL_Debug_Warning \"# download returns non zero value=$RET_VAL\"
[ ! -f "$DOWNLOAD_TMP/TE_DWLD" ] && POL_Debug_Fatal "# ERROR: download demo html page failed"
# - - - - - - - - - - - - - - - - - - - - -
POL_Debug_Message "# analyze HTML page"
VERSION_REMOTE=`fgrep "from Windows" $DOWNLOAD_TMP/TE_DWLD | cut -d "-" -f 2 | cut -d " " -f 2 | cut -d "v" -f 2`
POL_Debug_Message "# VERSION_REMOTE=$VERSION_REMOTE"
}
# ==============================================================
getInstallerLocalDownload()
# --------------------------------------------------------------
# 1. decide if local or download
# 1.1 browse for local installer
# 1.2 download
# 1.2.a registered version
#       .store secured download page locally
#       .analyze page for latest installer
#        This may no longer work if download page logic changes
# 1.2.b demo version
# 2. check installer size is not too small
# ==============================================================
{
POL_Debug_Message "# USER CHOICE: select local or download"
[ "$USE_AUTOMATION" = "1" ] && \
        INSTALL_METHOD="DOWNLOAD" || \
        POL_SetupWindow_InstallMethod "LOCAL,DOWNLOAD"
if [ "$INSTALL_METHOD" = "LOCAL" ]; then
        MSG="Please select the setup file to run."
        POL_SetupWindow_browse "$(eval_gettext '$MSG')" ""
        INSTALLER="$APP_ANSWER"
elif [ "$INSTALL_METHOD" = "DOWNLOAD" ]; then
        POL_Debug_Message "# download installer"
        if [ "$USE_REGISTERED_VERSION" = "1" ]; then 
                # - - - - - - - - - - - - - - - - - - - - -
                # TablEdit registered user - user/password
                [ -z "$TE_USR" ] && POL_Debug_Fatal "# ERROR: user name not set"
                [ -z "$TE_PWD" ] && POL_Debug_Fatal "# ERROR: password not set"
                # - - - - - - - - - - - - - - - - - - - - -
                # download html page for registered version
                DOWNLOAD_PATH=$DOWNLOAD_RGSTRED_PATH
                DOWNLOAD_DIR=$(dirname "$DOWNLOAD_PATH")
                DOWNLOAD_FILE="windows_e.shtml"
                DOWNLOAD_TMP=$POL_System_TmpDir
                POL_Debug_Message "# download secured html page ($DOWNLOAD_DIR/$DOWNLOAD_FILE)"
                wget --user "$TE_USR" --password "$TE_PWD" -O $DOWNLOAD_TMP/TE_DWLD $DOWNLOAD_DIR/$DOWNLOAD_FILE 2>/dev/null;
                RET_VAL="$?"
                [ "$RET_VAL" -ne "0" ] && echo POL_Debug_Warning \"# download returns non zero value=$RET_VAL\"
                [ ! -f "$DOWNLOAD_TMP/TE_DWLD" ] && POL_Debug_Fatal "# ERROR: download secured html page failed"
                # - - - - - - - - - - - - - - - - - - - - -
                POL_Debug_Message "# analyze HTML page"
                VERSION_REMOTE=`fgrep "B>TablEdit v" $DOWNLOAD_TMP/TE_DWLD | cut -d " " -f 2 | cut -d "v" -f 2`
                POL_Debug_Message "# installer version=$VERSION_REMOTE"
                DOWNLOAD_FILE=`fgrep "B>TablEdit v" $DOWNLOAD_TMP/TE_DWLD | cut -d '"' -f 2`
                DOWNLOAD_PATH=$DOWNLOAD_DIR/$DOWNLOAD_FILE
                # - - - - - - - - - - - - - - - - - - - - -
                # download secured installer
                POL_Debug_Message "# download the secured installer ($DOWNLOAD_PATH)"
                POL_Debug_Message "# wget -O "$DOWNLOAD_TMP/$DOWNLOAD_FILE" --user=$TE_USR --password=$TE_PWD $DOWNLOAD_PATH"
                wget -O "$DOWNLOAD_TMP/$DOWNLOAD_FILE" --user=$TE_USR --password=$TE_PWD $DOWNLOAD_PATH
                RET_VAL="$?"
                [ "$RET_VAL" -ne "0" ] && echo POL_Debug_Warning "# download returns non zero value=$RET_VAL"
                [ ! -f "$DOWNLOAD_TMP/$DOWNLOAD_FILE" ] && POL_Debug_Fatal "# ERROR: download secured installer failed"
                INSTALLER="$DOWNLOAD_TMP/$DOWNLOAD_FILE"
                POL_Debug_Message "# INFO: registered program downloaded to $INSTALLER"
        else
                # - - - - - - - - - - - - - - - - - - - - -
                # download demo installer
                DOWNLOAD_LINK=$DOWNLOAD_PREVIEW_PATH
                DOWNLOAD_FILE=$(basename "$DOWNLOAD_LINK")
                POL_Debug_Message "# download the demo installer ($DOWNLOAD_LINK)"
                POL_Download "$DOWNLOAD_LINK"
                INSTALLER="$POL_System_TmpDir/$DOWNLOAD_FILE"
                POL_Debug_Message "# INFO: demo program downloaded to $INSTALLER"
        fi
fi
if [[ -z "$INSTALLER" || ! -f "$INSTALLER" ]];then 
        MSG="ERROR: cannot locate installer >$INSTALLER< for $TITLE."
        POL_Debug_Message "# $MSG"
        POL_SetupWindow_message "$(eval_gettext '$MSG')" "$TITLE"
fi
# ---------------------
# check installer size
file_size_kb=`du -k "$INSTALLER" | cut -f1`
if [ "$file_size_kb" -lt 1000 ]; then
        POL_Debug_Fatal "# ERROR: Installer \(${INSTALLER}\) size \(${file_size_kb kb}\) is too small for a set-up file."
fi
return 0
}
# ==============================================================
registryLanguage()
# --------------------------------------------------------------
# set TablEdit language according to locale
# ==============================================================
{
LANG_VAL=0 # 0 - English (default)
LANG_CUR=`echo $LANG | cut -c 1-2`
[ \"$LANG_CUR\" = \"de\" ] && LANG_VAL=512  # 512 - German
[ \"$LANG_CUR\" = \"fr\" ] && LANG_VAL=256  # 256 - French
[ \"$LANG_CUR\" = \"es\" ] && LANG_VAL=768  # 768 - Spanish
[ \"$LANG_CUR\" = \"jp\" ] && LANG_VAL=1024 # 1024- Janpanese
echo "\"Language\"=\"$LANG_VAL\"" >> $FILE_USRREG
}
# ==============================================================
registryProgram()
# --------------------------------------------------------------
# update registry with user registeration info
# ==============================================================
{
if [ "$USE_REGISTERED_VERSION" = "1" ]; then
        POL_Debug_Message "# INFO: register Password, UserName"
        echo -e "\"UserName\"=\""$TE_USR"\"\n\"Password\"=\""$TE_PWD"\"" >> $FILE_USRREG
        FOUND=`fgrep '\"Password\"' $FILE_USRREG`
        [ ! -z "$FOUND" ] && POL_Debug_Message "# INFO: registered"
fi
}
# ==============================================================
registryWindows()
# --------------------------------------------------------------
# We clean up scattered windows of regular install and
# update registry with user preferences (colors, windows)
# ==============================================================
{
POL_Debug_Message "# INFO: register windows"
echo "\"Colorsv3\"=\"0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0xff,0xdbecec,0xdff0f5,0x0,\"" >> $FILE_USRREG
echo "\"Palette1\"=\"326,76,104,118,0,27,465,28,53,233,20,1,132,0\"" >> $FILE_USRREG
echo "\"Palette2\"=\"597,76,104,118,511,27,465,28,53,233,20,1,132,0\"" >> $FILE_USRREG
echo "\"Palette3\"=\"432,76,104,49,984,27,189,28,53,95,8,1,132,0\"" >> $FILE_USRREG
echo "\"Palette4\"=\"491,76,104,72,0,219,281,28,53,141,12,1,148,0\"" >> $FILE_USRREG
echo "\"Palette5\"=\"492,173,104,95,885,102,373,28,53,187,16,1,148,0\"" >> $FILE_USRREG
echo "\"Palette6\"=\"706,76,104,141,0,27,101,141,101,141,1,1,148,0\"" >> $FILE_USRREG
echo "\"Palette7\"=\"162,383,551,58,0,637,551,60,553,58,1,1,24,0\"" >> $FILE_USRREG
echo -e "\"ScrOutput\"=\"001001110000=1W1:>899<>7F001P040S@//210000000000\"" >> $FILE_USRREG
}
# ==============================================================
getRegistryExists()
# --------------------------------------------------------------
# check if registry is valid for the installed program
# 0: not existing
# 1: existing
# ==============================================================
{
REGISTRY_EXISTS=0
# ---------------------
# check user.reg exists
FILE_USRREG="$WINEPREFIX/user.reg"
[ ! -f "$FILE_USRREG" ] && POL_Debug_Fatal "# ERROR: file not found $FILE_USRREG"
# ---------------------
# check system.reg exists
FILE_SYSREG="$WINEPREFIX/system.reg"
[ ! -f "$FILE_SYSREG" ] && POL_Debug_Fatal "# ERROR: file not found $FILE_SYSREG"
# ---------------------
# check user.reg key exists
FOUND="`fgrep '\\TablEdit' $FILE_USRREG`" 
[ -z "$FOUND" ] && POL_Debug_Message "# WARNING: key \\TablEdit does not yet exist\n(Wine may still need time to flush the file)\n$FILE_USRREG." && return 0
# ---------------------
# return success
REGISTRY_EXISTS=1
return "$REGISTRY_EXISTS"
}
# ==============================================================
waitsec()
# --------------------------------------------------------------
# sleep function with some debug message
# ==============================================================
{
P1="$1"
[[ -z "$P1" || "$P1" = 0 ]] && return 0
POL_Debug_Message "# let's wait $P1 seconds"
sleep "$P1"
}
# ==============================================================
updateRegistry()
# --------------------------------------------------------------
# update registry with some program settings
# color, windows position, user registration info, language
# The installers registry values do need time to show. 
# So, if we do not find them, let's wait a while.
# ==============================================================
{
# - - - - - - - - - - - - - -
# validate registry exists
REGISTRY_EXISTS=0
getRegistryExists
typeset -i iCount=0 iMax=4
while [[ "$REGISTRY_EXISTS" = 0 && $iCount -lt $iMax ]]; do
        iCount=iCount+1
        POL_Debug_Message "# WARNING: waiting for registry $iCount"
        waitsec 4
        getRegistryExists
done
[ "$REGISTRY_EXISTS" = 0 ] && POL_Debug_Message "# WARNING: getRegistryExists - returned 0"
FILE_USRREG="$WINEPREFIX/user.reg"
# - - - - - - - - - - - - - -
# add to registry: Password, UserName, Windows, Language
POL_Debug_Message "# INFO: add registy keys Software\\\\\\\\TablEdit"
echo "[Software\\\\\\\\TablEdit\\\\\\\\TablEdit]" >> $FILE_USRREG
registryProgram
registryWindows
registryLanguage
echo -e "\n" >> $FILE_USRREG
}
# ==============================================================
getVersion()
# --------------------------------------------------------------
# read installed version from system.reg
# if not found, retry some times, then get remote version
# ==============================================================
{
REGISTRY_EXISTS=0
# ----------------------------------
# validate registry
getRegistryExists
typeset -i iCount=0 iMax=4
while [[ "$REGISTRY_EXISTS" = 0 && $iCount -lt $iMax ]]; do
        iCount=iCount+1
        POL_Debug_Message "# WARNING: waiting for registry $iCount"
        waitsec 4
        getRegistryExists 
done
[ "$REGISTRY_EXISTS" = 0 ] && POL_Debug_Message "# WARNING: getRegistryExists returned 0"
# ----------------------------------
# get Version Info from system.reg
cd "$WINEPREFIX" || POL_Debug_Fatal "# ERROR: Unable to change directory"
RESULT1=`fgrep -A 1 '"DisplayName"="TablEdit' system.reg  | grep -A 0 '"DisplayVersion"' `
[ ! -z "$RESULT1" ] && VERSION_INSTALLED=`echo $RESULT1 | cut -d '"' -f 4 `
if [ -z "$VERSION_INSTALLED" ]; then
# ----------------------------------
# get remote Version
        POL_Debug_Warning "# WARNING: 'DisplayVersion TablEdit' not found in system.reg"
        getVersionRemote
        POL_Debug_Warning "# WARNING: using remote demo version ($VERSION_REMOTE) as a fallback"
        VERSION_INSTALLED="$VERSION_REMOTE" 
fi
# POL_Debug_Message "# VERSION_INSTALLED=$VERSION_INSTALLED"
# VER_LEN="${#VERSION_INSTALLED}"
# POL_Debug_Message "# LEN=$VER_LEN"
}
# ==============================================================
createShortcut()
# --------------------------------------------------------------
# 1. get installed version
# 2. remove previous desktop starter
# 3. remove previous POL shortcut
# 4. add POL shortcut with version info
# 5. add timidity to POL shortcut
# ==============================================================
{
# -------------------
POL_Debug_Message "# get program version"
getVersion
POL_Debug_Message "# VERSION_INSTALLED: $VERSION_INSTALLED"
LAUNCHER="$TITLE"
[ ! -z "$VERSION_INSTALLED" ] && LAUNCHER="$LAUNCHER-v$VERSION_INSTALLED"
POL_Debug_Message "# LAUNCHER: $LAUNCHER"
# -------------------
PATH_SHORTCUT="$POL_USER_ROOT/shortcuts/$LAUNCHER"
if [ ! -f "$PATH_SHORTCUT" ];then
        # -------------------
        POL_Debug_Message "# remove any previous desktop starter"
        LINUX_DESKTOP=`xdg-user-dir DESKTOP`
        PATH_SHORTCUT="$LINUX_DESKTOP/$TITLE"
        rm -r "$PATH_SHORTCUT"* 2>/dev/null;
        rm -r $HOME/.local/share/applications/*$TITLE* 2>/dev/null;
        # -------------------
        POL_Debug_Message "# remove previous POL shortcut"
        PATH_SHORTCUT="$POL_USER_ROOT/shortcuts/$TITLE"
        rm -r "$PATH_SHORTCUT"* 2>/dev/null;
        # -------------------
        POL_Debug_Message "# create POL shortcut"
        POL_Shortcut "$EXECUTABLE_FILE" "$LAUNCHER" "" "" "AudioVideo;Audio;AudioVideoEditing;Music;"
        # -------------------
        PATH_SHORTCUT="$POL_USER_ROOT/shortcuts/$LAUNCHER"
fi
[ -f "$PATH_SHORTCUT" ] && MSG="$LAUNCHER installation ok" && POL_Debug_Message "# $MSG"
# ===================
# Add timidity to POL shortcut
POL_Debug_Message "# Adding TiMidity to POL shortcut $PATH_SHORTCUT"
TIMIDITY_APP=`which timidity`
[ -z "$TIMIDITY_APP" ] && POL_Debug_Warning "# no timidity found" && return -1
if [ -z "`fgrep timidity $PATH_SHORTCUT`" ];then
        STARTTIMIDITY="[ -z \"\`pstree | grep timidity\`\" ] \&\& timidity -iA -B2,8 -Os1l -s 44100 \&"
        echo "s+POL_Wine*+$STARTTIMIDITY\nPOL_Wine+g" > $POL_System_TmpDir/SED_CMD
        sed -i -f $POL_System_TmpDir/SED_CMD $PATH_SHORTCUT
fi
return 0
}
######################
# MAIN
IMAGE_TOP="https://tabledit.com/css/img/header1.jpg"
IMAGE_LEFT="https://tabledit.com/ios/TEFpad.ios.logo.175x175-75.jpg"
POL_GetSetupImages --force  "$IMAGE_TOP" "$IMAGE_LEFT" "$TITLE"
POL_SetupWindow_Init
POL_Debug_Init
POL_Debug_Message "# show POL Window"
POL_SetupWindow_presentation "$TITLE" "$EDITOR" "$EDITOR_URL" "$AUTHOR" "$PREFIX"
Set_OS "win7"
# ---------------------
POL_Debug_Message "# create PREFIX environment"
POL_Wine_SelectPrefix "$PREFIX"
POL_System_SetArch "x86"
POL_Wine_PrefixCreate
Set_OS "win7"
POL_System_TmpCreate "$PREFIX"
PWD_OLD=`pwd`
cd "$POL_System_TmpDir" || POL_Debug_Fatal "# ERROR: Unable to change directory"
POL_Debug_Message "# WINEPREFIX: $WINEPREFIX"
POL_Debug_Message "# PREFIX: $PREFIX"
POL_Debug_Message "# POL_System_TmpDir: $POL_System_TmpDir"
# ===================
POL_Debug_Message "# USER CHOICE: registered or preview"
getRegisteredOrPreview
# ---------------------
POL_Debug_Message "# get Installer local or download"
getInstallerLocalDownload
# ===================
POL_Debug_Message "# check TiMidity is available"
TIMIDITY_APP=`which timidity`
if [ -z "$TIMIDITY_APP" ];then
        MSG="For $TITLE to run, we recommend you install TiMidity on your system first.\nPlease open a terminal and execute this command line:\n
        sudo apt-get -y install timidity\n\nThen continue or restart this POL installation.\n"
        POL_SetupWindow_message "$(eval_gettext '$MSG')"
fi
# ===================
POL_Debug_Message "# start wine installation ("$INSTALLER")"
MSG="Installation in progress."
POL_SetupWindow_wait "$(eval_gettext '$MSG')" ""
POL_Wine "$INSTALLER"
POL_Debug_Message "# confirm the executable - tabledit.exe or tableditdemo.exe exists"
FOUND=`find $WINEPREFIX -name "$EXECUTABLE_FILE" -print`
[ -z "$FOUND" ] && POL_Debug_Fatal "# ERROR: $EXECUTABLE_FILE not found in $WINEPREFIX"
# ===================
POL_Debug_Message "# finalize installation"
updateRegistry
createShortcut
POL_System_TmpDelete
POL_SetupWindow_Close
exit

Contributions

Filters:

Contribute
Member Wiadmości
bob234 Monday 1 August 2022 at 21:59
bob234 Anonymous

Wiadmości

Hello, I tried to install this on my system (Manjaro linux, kernel: 5.10.133-1-MANJARO) and it crashes on launch with the following error:

[08/01/22 21:35:54] - Running wine- tableditdemo.exe (Working directory : /home/bob/.PlayOnLinux/wineprefix/tabledit/drive_c/Program Files/TablEdit)
0024:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
0024:fixme:imm:ImeSetActiveContext (00010098, 1): stub
0024:fixme:imm:ImmReleaseContext (00010092, 00010098): stub
00c8:fixme:imm:ImeSetActiveContext (00010026, 0): stub
00c8:fixme:imm:ImmReleaseContext (00010020, 00010026): stub
wine: Unhandled page fault on write access to 00000000 at address 68708373 (thread 0024), starting debugger...
010c:fixme:imm:ImeSetActiveContext (0001010E, 1): stub
010c:fixme:imm:ImmReleaseContext (00010118, 0001010E): stub

 

Any idea what could be the cause?

Odpowiedzi

Tuesday 27 September 2022 at 9:41
Hi Bob234,
I do not have a swift solution for you, but... will investigate on my side, which will take quite some time.
In the meantime I can provide some guidance what you may want to check on your system.
Each POL install script will depend on the underlying fundamentals:
1. POL - PlayOnLinux with the Install script
2. Windows installer (.msi or .exe) - here "tableditdemo.exe".
3. Wine
4. the Linux distro - here MANJARO
To drill deeper and find out which component is the root cause for a crash is quite complex.
And, in order to analyze a crash you need to address all 4 elements one after each other and then in combination.
In your case, the POL script has downloaded the Windows installer successfully and then fails; i.e. Wine crashes during it's execution.
So, the root-cause may be caused by the versions of wine and/or your distro.
If you are interested and the issue persists I'll share some steps to analyze.
Sunday 9 October 2022 at 19:47
Hi Bob234,
in order to circle in on your issue(s), I have installed Manjaro (Manjaro Linux; Build-ID: rolling; Gnome-Version: 42.4) in a virtual box.
Then, looking at my list above, there may be a problem with (1), as POL is not officially supported under Manjaro and only available as AUR (Arc Linux User Repository). Therefore I entered these commands in a terminal:
sudo pamac build playonlinux
sudo pacman -S timidity
Then I did run playonlinux 4 and TablEdit was successfully installed.

Please tell me more about what issue you have encountered.
VolkerFroehlich Thursday 4 March 2021 at 20:27
VolkerFroehlich

Information

This update has been approved by the team.

Wiadmości

Dear Musicians,

This new POL TablEdit installer adds quite some convenience:
- download the latest program version / no hard-coded version info
- works for demo preview and secured set-up (if username/password is provided) for registered TablEdit users
- allows selection of local set-up file
- shows TablEdit logo on POL screens
- adds version info to the (desktop and POL) launcher name
- adds TiMidity software synthesizer to launcher (required on Linux)
- updates registry after installation (register user, arrange user interface, language)
- deals robust with registry flaw of delayed visibility of TablEdit values post-installation.
  (Here one assumption is, that wine still needs time to flush the file buffer, but I refrained from digging deeper into this behaviour.)
- provides for automated installation bypassing user interaction as far as possible (only for expert users: USE_AUTOMATION=1)

Have fun!

Volker Fröhlich!

 

Differences

@@ -1,107 +1,413 @@
 #!/usr/bin/env playonlinux-bash
-# Date : (2020-08-17 23:57)
-# Last revision : (2020-08-19 17:20)
-# Wine version used : 5.0.2
-# Distribution used to test : Ubuntu 19.10, 20.04.1 LTS
-# Author : VolkerFröhlich
-# PlayOnLinux : 4.3.4
-# Script licence : GPL3
-# Program licence : Free/Retail
 [ "$PLAYONLINUX" = "" ] && exit 0
 source "$PLAYONLINUX/lib/sources"
- 
-TITLE="TablEdit3"
- 
-PREFIX="tabledit3"
-AUTHOR="VolkerFröhlich"
+######################
+# created Do 4. Mär 19:07:41 CET 2021
+######################
+# global parameters
+TITLE="TablEdit"
+PREFIX="tabledit"
+AUTHOR="VolkerFroehlich"
 EDITOR="Matthieu Leschemelle"
 EDITOR_URL="https://tabledit.com/"
- 
-EXECUTABLE_FILE="tableditdemo.exe"
 MD5=""
- 
-# Starting the script
+DOWNLOAD_RGSTRED_PATH="https://tabledit.com/secured/tev301.exe"
+DOWNLOAD_PREVIEW_PATH="https://tabledit.com/download/tabled32.exe"
+EXECUTABLE_FILE="tableditdemo.exe"
+# automation parameters
+USE_AUTOMATION="0" # 1: do not ask user 
+USE_REGISTERED_VERSION=0 # 1: use registered version
+[ "$USE_REGISTERED_VERSION" = "1" ] && EXECUTABLE_FILE="tabledit.exe"
+######################
+# FUNCTIONS
+# ==============================================================
+getRegisteredOrPreview()
+# --------------------------------------------------------------
+# Ask user for TablEdit registration info. 
+# We require this for access to the secured download page
+# and later to add registration data to the windows registry.
+# Store input to variables
+#  TE_USR: username
+#  TE_PWD: password
+# ==============================================================
+{
+TE_USR="" # with USE_AUTOMATION=1 you can predefine your
+TE_PWD="" # tabledit registered user/password here
+[ "$USE_AUTOMATION" = "1" ] && return 0
+# -------------------
+# ask user if registered
+MSG="If you do have a user name and password we install the full version, else the preview demo.\n\nAre you a registered user?"
+POL_SetupWindow_question "$(eval_gettext '$MSG')" "$TITLE"
+POL_Debug_Message "# APP_ANSWER=$APP_ANSWER"
+[ "$APP_ANSWER" = "TRUE" ] && USE_REGISTERED_VERSION=1 || USE_REGISTERED_VERSION=0
+[ ! "$USE_REGISTERED_VERSION" = "1" ] && return 0 # install preview demo version
+# -------------------
+# use registered version
+EXECUTABLE_FILE="tabledit.exe"
+MSG="Username"
+POL_SetupWindow_textbox "$(eval_gettext '$MSG')" "$TITLE" "$TE_USR"
+[ -z "$APP_ANSWER" ] && return 0
+TE_USR="$APP_ANSWER"
+MSG="Password"
+POL_SetupWindow_textbox "$(eval_gettext '$MSG')" "$TITLE" "$TE_PWD"
+[ -z "$APP_ANSWER" ] && TE_USR="" && return 0
+TE_PWD="$APP_ANSWER"
+[ -z "$TE_USR" ] && POL_Debug_Fatal "# ERROR: User not defined"
+[ -z "$TE_PWD" ] && POL_Debug_Fatal "# ERROR: Password not defined"
+return 0 # use registered version
+}
+# ==============================================================
+getVersionRemote()
+# --------------------------------------------------------------
+# check demo download page for latest version info
+# and store this in variable
+#    VERSION_REMOTE
+# ==============================================================
+{
+POL_Debug_Message "# getVersionRemote"
+VERSION_REMOTE=""
+# - - - - - - - - - - - - - - - - - - - - -
+# download html page for demo version
+DOWNLOAD_PATH=$DOWNLOAD_PREVIEW_PATH
+DOWNLOAD_DIR=$(dirname "$DOWNLOAD_PATH")
+DOWNLOAD_FILE=$(basename "$DOWNLOAD_PATH")
+DOWNLOAD_TMP=$POL_System_TmpDir
+POL_Debug_Message "# download secured html page ($DOWNLOAD_DIR/$DOWNLOAD_FILE)"
+wget -O $DOWNLOAD_TMP/TE_DWLD $DOWNLOAD_DIR/ 2>/dev/null;
+RET_VAL="$?"
+[ "$RET_VAL" -ne "0" ] && echo POL_Debug_Warning \"# download returns non zero value=$RET_VAL\"
+[ ! -f "$DOWNLOAD_TMP/TE_DWLD" ] && POL_Debug_Fatal "# ERROR: download demo html page failed"
+# - - - - - - - - - - - - - - - - - - - - -
+POL_Debug_Message "# analyze HTML page"
+VERSION_REMOTE=`fgrep "from Windows" $DOWNLOAD_TMP/TE_DWLD | cut -d "-" -f 2 | cut -d " " -f 2 | cut -d "v" -f 2`
+POL_Debug_Message "# VERSION_REMOTE=$VERSION_REMOTE"
+}
+# ==============================================================
+getInstallerLocalDownload()
+# --------------------------------------------------------------
+# 1. decide if local or download
+# 1.1 browse for local installer
+# 1.2 download
+# 1.2.a registered version
+#       .store secured download page locally
+#       .analyze page for latest installer
+#        This may no longer work if download page logic changes
+# 1.2.b demo version
+# 2. check installer size is not too small
+# ==============================================================
+{
+POL_Debug_Message "# USER CHOICE: select local or download"
+[ "$USE_AUTOMATION" = "1" ] && \
+	INSTALL_METHOD="DOWNLOAD" || \
+	POL_SetupWindow_InstallMethod "LOCAL,DOWNLOAD"
+if [ "$INSTALL_METHOD" = "LOCAL" ]; then
+	MSG="Please select the setup file to run."
+	POL_SetupWindow_browse "$(eval_gettext '$MSG')" ""
+	INSTALLER="$APP_ANSWER"
+elif [ "$INSTALL_METHOD" = "DOWNLOAD" ]; then
+	POL_Debug_Message "# download installer"
+	if [ "$USE_REGISTERED_VERSION" = "1" ]; then 
+		# - - - - - - - - - - - - - - - - - - - - -
+		# TablEdit registered user - user/password
+		[ -z "$TE_USR" ] && POL_Debug_Fatal "# ERROR: user name not set"
+		[ -z "$TE_PWD" ] && POL_Debug_Fatal "# ERROR: password not set"
+		# - - - - - - - - - - - - - - - - - - - - -
+		# download html page for registered version
+		DOWNLOAD_PATH=$DOWNLOAD_RGSTRED_PATH
+		DOWNLOAD_DIR=$(dirname "$DOWNLOAD_PATH")
+		DOWNLOAD_FILE="windows_e.shtml"
+		DOWNLOAD_TMP=$POL_System_TmpDir
+		POL_Debug_Message "# download secured html page ($DOWNLOAD_DIR/$DOWNLOAD_FILE)"
+		wget --user "$TE_USR" --password "$TE_PWD" -O $DOWNLOAD_TMP/TE_DWLD $DOWNLOAD_DIR/$DOWNLOAD_FILE 2>/dev/null;
+		RET_VAL="$?"
+		[ "$RET_VAL" -ne "0" ] && echo POL_Debug_Warning \"# download returns non zero value=$RET_VAL\"
+		[ ! -f "$DOWNLOAD_TMP/TE_DWLD" ] && POL_Debug_Fatal "# ERROR: download secured html page failed"
+		# - - - - - - - - - - - - - - - - - - - - -
+		POL_Debug_Message "# analyze HTML page"
+		VERSION_REMOTE=`fgrep "B>TablEdit v" $DOWNLOAD_TMP/TE_DWLD | cut -d " " -f 2 | cut -d "v" -f 2`
+		POL_Debug_Message "# installer version=$VERSION_REMOTE"
+		DOWNLOAD_FILE=`fgrep "B>TablEdit v" $DOWNLOAD_TMP/TE_DWLD | cut -d '"' -f 2`
+		DOWNLOAD_PATH=$DOWNLOAD_DIR/$DOWNLOAD_FILE
+		# - - - - - - - - - - - - - - - - - - - - -
+		# download secured installer
+		POL_Debug_Message "# download the secured installer ($DOWNLOAD_PATH)"
+		POL_Debug_Message "# wget -O "$DOWNLOAD_TMP/$DOWNLOAD_FILE" --user=$TE_USR --password=$TE_PWD $DOWNLOAD_PATH"
+		wget -O "$DOWNLOAD_TMP/$DOWNLOAD_FILE" --user=$TE_USR --password=$TE_PWD $DOWNLOAD_PATH
+		RET_VAL="$?"
+		[ "$RET_VAL" -ne "0" ] && echo POL_Debug_Warning "# download returns non zero value=$RET_VAL"
+		[ ! -f "$DOWNLOAD_TMP/$DOWNLOAD_FILE" ] && POL_Debug_Fatal "# ERROR: download secured installer failed"
+		INSTALLER="$DOWNLOAD_TMP/$DOWNLOAD_FILE"
+		POL_Debug_Message "# INFO: registered program downloaded to $INSTALLER"
+	else
+		# - - - - - - - - - - - - - - - - - - - - -
+		# download demo installer
+		DOWNLOAD_LINK=$DOWNLOAD_PREVIEW_PATH
+		DOWNLOAD_FILE=$(basename "$DOWNLOAD_LINK")
+		POL_Debug_Message "# download the demo installer ($DOWNLOAD_LINK)"
+		POL_Download "$DOWNLOAD_LINK"
+		INSTALLER="$POL_System_TmpDir/$DOWNLOAD_FILE"
+		POL_Debug_Message "# INFO: demo program downloaded to $INSTALLER"
+	fi
+fi
+if [[ -z "$INSTALLER" || ! -f "$INSTALLER" ]];then 
+	MSG="ERROR: cannot locate installer >$INSTALLER< for $TITLE."
+	POL_Debug_Message "# $MSG"
+	POL_SetupWindow_message "$(eval_gettext '$MSG')" "$TITLE"
+fi
+# ---------------------
+# check installer size
+file_size_kb=`du -k "$INSTALLER" | cut -f1`
+if [ "$file_size_kb" -lt 1000 ]; then
+	POL_Debug_Fatal "# ERROR: Installer \(${INSTALLER}\) size \(${file_size_kb kb}\) is too small for a set-up file."
+fi
+return 0
+}
+# ==============================================================
+registryLanguage()
+# --------------------------------------------------------------
+# set TablEdit language according to locale
+# ==============================================================
+{
+LANG_VAL=0 # 0 - English (default)
+LANG_CUR=`echo $LANG | cut -c 1-2`
+[ \"$LANG_CUR\" = \"de\" ] && LANG_VAL=512  # 512 - German
+[ \"$LANG_CUR\" = \"fr\" ] && LANG_VAL=256  # 256 - French
+[ \"$LANG_CUR\" = \"es\" ] && LANG_VAL=768  # 768 - Spanish
+[ \"$LANG_CUR\" = \"jp\" ] && LANG_VAL=1024 # 1024- Janpanese
+echo "\"Language\"=\"$LANG_VAL\"" >> $FILE_USRREG
+}
+# ==============================================================
+registryProgram()
+# --------------------------------------------------------------
+# update registry with user registeration info
+# ==============================================================
+{
+if [ "$USE_REGISTERED_VERSION" = "1" ]; then
+	POL_Debug_Message "# INFO: register Password, UserName"
+	echo -e "\"UserName\"=\""$TE_USR"\"\n\"Password\"=\""$TE_PWD"\"" >> $FILE_USRREG
+	FOUND=`fgrep '\"Password\"' $FILE_USRREG`
+	[ ! -z "$FOUND" ] && POL_Debug_Message "# INFO: registered"
+fi
+}
+# ==============================================================
+registryWindows()
+# --------------------------------------------------------------
+# We clean up scattered windows of regular install and
+# update registry with user preferences (colors, windows)
+# ==============================================================
+{
+POL_Debug_Message "# INFO: register windows"
+echo "\"Colorsv3\"=\"0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0xff,0xdbecec,0xdff0f5,0x0,\"" >> $FILE_USRREG
+echo "\"Palette1\"=\"326,76,104,118,0,27,465,28,53,233,20,1,132,0\"" >> $FILE_USRREG
+echo "\"Palette2\"=\"597,76,104,118,511,27,465,28,53,233,20,1,132,0\"" >> $FILE_USRREG
+echo "\"Palette3\"=\"432,76,104,49,984,27,189,28,53,95,8,1,132,0\"" >> $FILE_USRREG
+echo "\"Palette4\"=\"491,76,104,72,0,219,281,28,53,141,12,1,148,0\"" >> $FILE_USRREG
+echo "\"Palette5\"=\"492,173,104,95,885,102,373,28,53,187,16,1,148,0\"" >> $FILE_USRREG
+echo "\"Palette6\"=\"706,76,104,141,0,27,101,141,101,141,1,1,148,0\"" >> $FILE_USRREG
+echo "\"Palette7\"=\"162,383,551,58,0,637,551,60,553,58,1,1,24,0\"" >> $FILE_USRREG
+echo -e "\"ScrOutput\"=\"001001110000=1W1:>899<>7F001P040S@//210000000000\"" >> $FILE_USRREG
+}
+# ==============================================================
+getRegistryExists()
+# --------------------------------------------------------------
+# check if registry is valid for the installed program
+# 0: not existing
+# 1: existing
+# ==============================================================
+{
+REGISTRY_EXISTS=0
+# ---------------------
+# check user.reg exists
+FILE_USRREG="$WINEPREFIX/user.reg"
+[ ! -f "$FILE_USRREG" ] && POL_Debug_Fatal "# ERROR: file not found $FILE_USRREG"
+# ---------------------
+# check system.reg exists
+FILE_SYSREG="$WINEPREFIX/system.reg"
+[ ! -f "$FILE_SYSREG" ] && POL_Debug_Fatal "# ERROR: file not found $FILE_SYSREG"
+# ---------------------
+# check user.reg key exists
+FOUND="`fgrep '\\TablEdit' $FILE_USRREG`" 
+[ -z "$FOUND" ] && POL_Debug_Message "# WARNING: key \\TablEdit does not yet exist\n(Wine may still need time to flush the file)\n$FILE_USRREG." && return 0
+# ---------------------
+# return success
+REGISTRY_EXISTS=1
+return "$REGISTRY_EXISTS"
+}
+# ==============================================================
+waitsec()
+# --------------------------------------------------------------
+# sleep function with some debug message
+# ==============================================================
+{
+P1="$1"
+[[ -z "$P1" || "$P1" = 0 ]] && return 0
+POL_Debug_Message "# let's wait $P1 seconds"
+sleep "$P1"
+}
+# ==============================================================
+updateRegistry()
+# --------------------------------------------------------------
+# update registry with some program settings
+# color, windows position, user registration info, language
+# The installers registry values do need time to show. 
+# So, if we do not find them, let's wait a while.
+# ==============================================================
+{
+# - - - - - - - - - - - - - -
+# validate registry exists
+REGISTRY_EXISTS=0
+getRegistryExists
+typeset -i iCount=0 iMax=4
+while [[ "$REGISTRY_EXISTS" = 0 && $iCount -lt $iMax ]]; do
+	iCount=iCount+1
+	POL_Debug_Message "# WARNING: waiting for registry $iCount"
+	waitsec 4
+	getRegistryExists
+done
+[ "$REGISTRY_EXISTS" = 0 ] && POL_Debug_Message "# WARNING: getRegistryExists - returned 0"
+FILE_USRREG="$WINEPREFIX/user.reg"
+# - - - - - - - - - - - - - -
+# add to registry: Password, UserName, Windows, Language
+POL_Debug_Message "# INFO: add registy keys Software\\\\\\\\TablEdit"
+echo "[Software\\\\\\\\TablEdit\\\\\\\\TablEdit]" >> $FILE_USRREG
+registryProgram
+registryWindows
+registryLanguage
+echo -e "\n" >> $FILE_USRREG
+}
+# ==============================================================
+getVersion()
+# --------------------------------------------------------------
+# read installed version from system.reg
+# if not found, retry some times, then get remote version
+# ==============================================================
+{
+REGISTRY_EXISTS=0
+# ----------------------------------
+# validate registry
+getRegistryExists
+typeset -i iCount=0 iMax=4
+while [[ "$REGISTRY_EXISTS" = 0 && $iCount -lt $iMax ]]; do
+	iCount=iCount+1
+	POL_Debug_Message "# WARNING: waiting for registry $iCount"
+	waitsec 4
+	getRegistryExists 
+done
+[ "$REGISTRY_EXISTS" = 0 ] && POL_Debug_Message "# WARNING: getRegistryExists returned 0"
+# ----------------------------------
+# get Version Info from system.reg
+cd "$WINEPREFIX" || POL_Debug_Fatal "# ERROR: Unable to change directory"
+RESULT1=`fgrep -A 1 '"DisplayName"="TablEdit' system.reg  | grep -A 0 '"DisplayVersion"' `
+[ ! -z "$RESULT1" ] && VERSION_INSTALLED=`echo $RESULT1 | cut -d '"' -f 4 `
+if [ -z "$VERSION_INSTALLED" ]; then
+# ----------------------------------
+# get remote Version
+	POL_Debug_Warning "# WARNING: 'DisplayVersion TablEdit' not found in system.reg"
+	getVersionRemote
+	POL_Debug_Warning "# WARNING: using remote demo version ($VERSION_REMOTE) as a fallback"
+	VERSION_INSTALLED="$VERSION_REMOTE" 
+fi
+# POL_Debug_Message "# VERSION_INSTALLED=$VERSION_INSTALLED"
+# VER_LEN="${#VERSION_INSTALLED}"
+# POL_Debug_Message "# LEN=$VER_LEN"
+}
+# ==============================================================
+createShortcut()
+# --------------------------------------------------------------
+# 1. get installed version
+# 2. remove previous desktop starter
+# 3. remove previous POL shortcut
+# 4. add POL shortcut with version info
+# 5. add timidity to POL shortcut
+# ==============================================================
+{
+# -------------------
+POL_Debug_Message "# get program version"
+getVersion
+POL_Debug_Message "# VERSION_INSTALLED: $VERSION_INSTALLED"
+LAUNCHER="$TITLE"
+[ ! -z "$VERSION_INSTALLED" ] && LAUNCHER="$LAUNCHER-v$VERSION_INSTALLED"
+POL_Debug_Message "# LAUNCHER: $LAUNCHER"
+# -------------------
+PATH_SHORTCUT="$POL_USER_ROOT/shortcuts/$LAUNCHER"
+if [ ! -f "$PATH_SHORTCUT" ];then
+	# -------------------
+	POL_Debug_Message "# remove any previous desktop starter"
+	LINUX_DESKTOP=`xdg-user-dir DESKTOP`
+	PATH_SHORTCUT="$LINUX_DESKTOP/$TITLE"
+	rm -r "$PATH_SHORTCUT"* 2>/dev/null;
+	rm -r $HOME/.local/share/applications/*$TITLE* 2>/dev/null;
+	# -------------------
+	POL_Debug_Message "# remove previous POL shortcut"
+	PATH_SHORTCUT="$POL_USER_ROOT/shortcuts/$TITLE"
+	rm -r "$PATH_SHORTCUT"* 2>/dev/null;
+	# -------------------
+	POL_Debug_Message "# create POL shortcut"
+	POL_Shortcut "$EXECUTABLE_FILE" "$LAUNCHER" "" "" "AudioVideo;Audio;AudioVideoEditing;Music;"
+	# -------------------
+	PATH_SHORTCUT="$POL_USER_ROOT/shortcuts/$LAUNCHER"
+fi
+[ -f "$PATH_SHORTCUT" ] && MSG="$LAUNCHER installation ok" && POL_Debug_Message "# $MSG"
+# ===================
+# Add timidity to POL shortcut
+POL_Debug_Message "# Adding TiMidity to POL shortcut $PATH_SHORTCUT"
+TIMIDITY_APP=`which timidity`
+[ -z "$TIMIDITY_APP" ] && POL_Debug_Warning "# no timidity found" && return -1
+if [ -z "`fgrep timidity $PATH_SHORTCUT`" ];then
+        STARTTIMIDITY="[ -z \"\`pstree | grep timidity\`\" ] \&\& timidity -iA -B2,8 -Os1l -s 44100 \&"
+        echo "s+POL_Wine*+$STARTTIMIDITY\nPOL_Wine+g" > $POL_System_TmpDir/SED_CMD
+        sed -i -f $POL_System_TmpDir/SED_CMD $PATH_SHORTCUT
+fi
+return 0
+}
+######################
+# MAIN
+IMAGE_TOP="https://tabledit.com/css/img/header1.jpg"
+IMAGE_LEFT="https://tabledit.com/ios/TEFpad.ios.logo.175x175-75.jpg"
+POL_GetSetupImages --force  "$IMAGE_TOP" "$IMAGE_LEFT" "$TITLE"
 POL_SetupWindow_Init
-                           
-# Starting debugging API
 POL_Debug_Init
-          
-#POL_SetupWindow_SetID
-# Open dialogue box
+POL_Debug_Message "# show POL Window"
 POL_SetupWindow_presentation "$TITLE" "$EDITOR" "$EDITOR_URL" "$AUTHOR" "$PREFIX"
 Set_OS "win7"
-POL_System_TmpCreate "$PREFIX"
- 
-POL_SetupWindow_InstallMethod "LOCAL,DOWNLOAD"
- 
-cd "$POL_System_TmpDir";
-##############################
-POL_Debug_Message "# select installer"
-if [ "$INSTALL_METHOD" = "LOCAL" ]; then
-	POL_SetupWindow_browse "$(eval_gettext 'Please select the setup file to run.')" "$TITLE"
-	INSTALLER="$APP_ANSWER"
-	POL_Debug_Message "# confirm the executable name"
-	if [ ! "`basename $INSTALLER`" = "tabled32.exe" ]; then
-		EXECUTABLE_FILE="tabledit.exe"
-	fi
-
-elif [ "$INSTALL_METHOD" = "DOWNLOAD" ]; then
-	DOWNLOAD_LINK=https://tabledit.com/download/tabled32.exe
-	DOWNLOAD_FILE=$(basename "https://tabledit.com/download/tabled32.exe")
-	POL_Download "$DOWNLOAD_LINK"
-	INSTALLER="$POL_System_TmpDir/tabled32.exe"
-fi
- 
-##############################
-POL_Debug_Message "# Set prefix"
+# ---------------------
+POL_Debug_Message "# create PREFIX environment"
 POL_Wine_SelectPrefix "$PREFIX"
-POL_Debug_Message "# setting WINEARCH to win32"
 POL_System_SetArch "x86"
 POL_Wine_PrefixCreate
-
-##############################
+Set_OS "win7"
+POL_System_TmpCreate "$PREFIX"
+PWD_OLD=`pwd`
+cd "$POL_System_TmpDir" || POL_Debug_Fatal "# ERROR: Unable to change directory"
+POL_Debug_Message "# WINEPREFIX: $WINEPREFIX"
+POL_Debug_Message "# PREFIX: $PREFIX"
+POL_Debug_Message "# POL_System_TmpDir: $POL_System_TmpDir"
+# ===================
+POL_Debug_Message "# USER CHOICE: registered or preview"
+getRegisteredOrPreview
+# ---------------------
+POL_Debug_Message "# get Installer local or download"
+getInstallerLocalDownload
+# ===================
 POL_Debug_Message "# check TiMidity is available"
 TIMIDITY_APP=`which timidity`
 if [ -z "$TIMIDITY_APP" ];then
-	MSG="For $TITLE to run, we recommend you install TiMidity on your system first.\nPlease open a terminal and execute this command line:\n
-	sudo apt-get -y install timidity\n\nThen continue or restart this POL installation.\n"
-	POL_SetupWindow_message "$(eval_gettext '$MSG')"
-fi
-
-##############################
-POL_Debug_Message "# start wine installation"
+        MSG="For $TITLE to run, we recommend you install TiMidity on your system first.\nPlease open a terminal and execute this command line:\n
+        sudo apt-get -y install timidity\n\nThen continue or restart this POL installation.\n"
+        POL_SetupWindow_message "$(eval_gettext '$MSG')"
+fi
+# ===================
+POL_Debug_Message "# start wine installation ("$INSTALLER")"
 MSG="Installation in progress."
-POL_SetupWindow_wait "$(eval_gettext '$MSG')" "$TITLE"
-
+POL_SetupWindow_wait "$(eval_gettext '$MSG')" ""
 POL_Wine "$INSTALLER"
-
-POL_Debug_Message "# confirm the executable exists"
-if [ -z `find $WINEPREFIX -name "$EXECUTABLE_FILE" -print` ]; then
-	POL_Debug_Fatal "$EXECUTABLE_FILE not found in $WINEPREFIX"
-fi
-
-POL_Shortcut "$EXECUTABLE_FILE" "$TITLE" "" "" "AudioVideo;Audio;AudioVideoEditing;Music;"
-
-##############################
-# Add timidity to POL shortcut
-TIMIDITY_APP=`which timidity`
-if [ ! -z "$TIMIDITY_APP" ];then
-	POL_TITLE_PATH="$POL_USER_ROOT/shortcuts/$TITLE"
-	POL_Debug_Message "# Adding TiMidity to POL shortcut $POL_TITLE_PATH"
-	if [ ! -f "$POL_TITLE_PATH" ];then
-		POL_Debug_Warning "file not found: $POL_TITLE_PATH"
-	else
-		if [ -z "`fgrep timidity $POL_TITLE_PATH`" ];then
-			STARTTIMIDITY="[ -z \"\`pstree | grep timidity\`\" ] \&\& timidity -iA -B2,8 -Os1l -s 44100 \&"
-			echo "s+POL_Wine*+$STARTTIMIDITY\nPOL_Wine+g" > $POL_System_TmpDir/SED_CMD
-			sed -i -f $POL_System_TmpDir/SED_CMD $POL_TITLE_PATH
-		fi
-	fi
-fi
-
-##############################
-POL_Debug_Message "# delete temp directory"
+POL_Debug_Message "# confirm the executable - tabledit.exe or tableditdemo.exe exists"
+FOUND=`find $WINEPREFIX -name "$EXECUTABLE_FILE" -print`
+[ -z "$FOUND" ] && POL_Debug_Fatal "# ERROR: $EXECUTABLE_FILE not found in $WINEPREFIX"
+# ===================
+POL_Debug_Message "# finalize installation"
+updateRegistry
+createShortcut
 POL_System_TmpDelete
- 
 POL_SetupWindow_Close
 exit

New source code

#!/usr/bin/env playonlinux-bash
[ "$PLAYONLINUX" = "" ] && exit 0
source "$PLAYONLINUX/lib/sources"
######################
# created Do 4. Mär 19:07:41 CET 2021
######################
# global parameters
TITLE="TablEdit"
PREFIX="tabledit"
AUTHOR="VolkerFroehlich"
EDITOR="Matthieu Leschemelle"
EDITOR_URL="https://tabledit.com/"
MD5=""
DOWNLOAD_RGSTRED_PATH="https://tabledit.com/secured/tev301.exe"
DOWNLOAD_PREVIEW_PATH="https://tabledit.com/download/tabled32.exe"
EXECUTABLE_FILE="tableditdemo.exe"
# automation parameters
USE_AUTOMATION="0" # 1: do not ask user 
USE_REGISTERED_VERSION=0 # 1: use registered version
[ "$USE_REGISTERED_VERSION" = "1" ] && EXECUTABLE_FILE="tabledit.exe"
######################
# FUNCTIONS
# ==============================================================
getRegisteredOrPreview()
# --------------------------------------------------------------
# Ask user for TablEdit registration info. 
# We require this for access to the secured download page
# and later to add registration data to the windows registry.
# Store input to variables
#  TE_USR: username
#  TE_PWD: password
# ==============================================================
{
TE_USR="" # with USE_AUTOMATION=1 you can predefine your
TE_PWD="" # tabledit registered user/password here
[ "$USE_AUTOMATION" = "1" ] && return 0
# -------------------
# ask user if registered
MSG="If you do have a user name and password we install the full version, else the preview demo.\n\nAre you a registered user?"
POL_SetupWindow_question "$(eval_gettext '$MSG')" "$TITLE"
POL_Debug_Message "# APP_ANSWER=$APP_ANSWER"
[ "$APP_ANSWER" = "TRUE" ] && USE_REGISTERED_VERSION=1 || USE_REGISTERED_VERSION=0
[ ! "$USE_REGISTERED_VERSION" = "1" ] && return 0 # install preview demo version
# -------------------
# use registered version
EXECUTABLE_FILE="tabledit.exe"
MSG="Username"
POL_SetupWindow_textbox "$(eval_gettext '$MSG')" "$TITLE" "$TE_USR"
[ -z "$APP_ANSWER" ] && return 0
TE_USR="$APP_ANSWER"
MSG="Password"
POL_SetupWindow_textbox "$(eval_gettext '$MSG')" "$TITLE" "$TE_PWD"
[ -z "$APP_ANSWER" ] && TE_USR="" && return 0
TE_PWD="$APP_ANSWER"
[ -z "$TE_USR" ] && POL_Debug_Fatal "# ERROR: User not defined"
[ -z "$TE_PWD" ] && POL_Debug_Fatal "# ERROR: Password not defined"
return 0 # use registered version
}
# ==============================================================
getVersionRemote()
# --------------------------------------------------------------
# check demo download page for latest version info
# and store this in variable
#    VERSION_REMOTE
# ==============================================================
{
POL_Debug_Message "# getVersionRemote"
VERSION_REMOTE=""
# - - - - - - - - - - - - - - - - - - - - -
# download html page for demo version
DOWNLOAD_PATH=$DOWNLOAD_PREVIEW_PATH
DOWNLOAD_DIR=$(dirname "$DOWNLOAD_PATH")
DOWNLOAD_FILE=$(basename "$DOWNLOAD_PATH")
DOWNLOAD_TMP=$POL_System_TmpDir
POL_Debug_Message "# download secured html page ($DOWNLOAD_DIR/$DOWNLOAD_FILE)"
wget -O $DOWNLOAD_TMP/TE_DWLD $DOWNLOAD_DIR/ 2>/dev/null;
RET_VAL="$?"
[ "$RET_VAL" -ne "0" ] && echo POL_Debug_Warning \"# download returns non zero value=$RET_VAL\"
[ ! -f "$DOWNLOAD_TMP/TE_DWLD" ] && POL_Debug_Fatal "# ERROR: download demo html page failed"
# - - - - - - - - - - - - - - - - - - - - -
POL_Debug_Message "# analyze HTML page"
VERSION_REMOTE=`fgrep "from Windows" $DOWNLOAD_TMP/TE_DWLD | cut -d "-" -f 2 | cut -d " " -f 2 | cut -d "v" -f 2`
POL_Debug_Message "# VERSION_REMOTE=$VERSION_REMOTE"
}
# ==============================================================
getInstallerLocalDownload()
# --------------------------------------------------------------
# 1. decide if local or download
# 1.1 browse for local installer
# 1.2 download
# 1.2.a registered version
#       .store secured download page locally
#       .analyze page for latest installer
#        This may no longer work if download page logic changes
# 1.2.b demo version
# 2. check installer size is not too small
# ==============================================================
{
POL_Debug_Message "# USER CHOICE: select local or download"
[ "$USE_AUTOMATION" = "1" ] && \
        INSTALL_METHOD="DOWNLOAD" || \
        POL_SetupWindow_InstallMethod "LOCAL,DOWNLOAD"
if [ "$INSTALL_METHOD" = "LOCAL" ]; then
        MSG="Please select the setup file to run."
        POL_SetupWindow_browse "$(eval_gettext '$MSG')" ""
        INSTALLER="$APP_ANSWER"
elif [ "$INSTALL_METHOD" = "DOWNLOAD" ]; then
        POL_Debug_Message "# download installer"
        if [ "$USE_REGISTERED_VERSION" = "1" ]; then 
                # - - - - - - - - - - - - - - - - - - - - -
                # TablEdit registered user - user/password
                [ -z "$TE_USR" ] && POL_Debug_Fatal "# ERROR: user name not set"
                [ -z "$TE_PWD" ] && POL_Debug_Fatal "# ERROR: password not set"
                # - - - - - - - - - - - - - - - - - - - - -
                # download html page for registered version
                DOWNLOAD_PATH=$DOWNLOAD_RGSTRED_PATH
                DOWNLOAD_DIR=$(dirname "$DOWNLOAD_PATH")
                DOWNLOAD_FILE="windows_e.shtml"
                DOWNLOAD_TMP=$POL_System_TmpDir
                POL_Debug_Message "# download secured html page ($DOWNLOAD_DIR/$DOWNLOAD_FILE)"
                wget --user "$TE_USR" --password "$TE_PWD" -O $DOWNLOAD_TMP/TE_DWLD $DOWNLOAD_DIR/$DOWNLOAD_FILE 2>/dev/null;
                RET_VAL="$?"
                [ "$RET_VAL" -ne "0" ] && echo POL_Debug_Warning \"# download returns non zero value=$RET_VAL\"
                [ ! -f "$DOWNLOAD_TMP/TE_DWLD" ] && POL_Debug_Fatal "# ERROR: download secured html page failed"
                # - - - - - - - - - - - - - - - - - - - - -
                POL_Debug_Message "# analyze HTML page"
                VERSION_REMOTE=`fgrep "B>TablEdit v" $DOWNLOAD_TMP/TE_DWLD | cut -d " " -f 2 | cut -d "v" -f 2`
                POL_Debug_Message "# installer version=$VERSION_REMOTE"
                DOWNLOAD_FILE=`fgrep "B>TablEdit v" $DOWNLOAD_TMP/TE_DWLD | cut -d '"' -f 2`
                DOWNLOAD_PATH=$DOWNLOAD_DIR/$DOWNLOAD_FILE
                # - - - - - - - - - - - - - - - - - - - - -
                # download secured installer
                POL_Debug_Message "# download the secured installer ($DOWNLOAD_PATH)"
                POL_Debug_Message "# wget -O "$DOWNLOAD_TMP/$DOWNLOAD_FILE" --user=$TE_USR --password=$TE_PWD $DOWNLOAD_PATH"
                wget -O "$DOWNLOAD_TMP/$DOWNLOAD_FILE" --user=$TE_USR --password=$TE_PWD $DOWNLOAD_PATH
                RET_VAL="$?"
                [ "$RET_VAL" -ne "0" ] && echo POL_Debug_Warning "# download returns non zero value=$RET_VAL"
                [ ! -f "$DOWNLOAD_TMP/$DOWNLOAD_FILE" ] && POL_Debug_Fatal "# ERROR: download secured installer failed"
                INSTALLER="$DOWNLOAD_TMP/$DOWNLOAD_FILE"
                POL_Debug_Message "# INFO: registered program downloaded to $INSTALLER"
        else
                # - - - - - - - - - - - - - - - - - - - - -
                # download demo installer
                DOWNLOAD_LINK=$DOWNLOAD_PREVIEW_PATH
                DOWNLOAD_FILE=$(basename "$DOWNLOAD_LINK")
                POL_Debug_Message "# download the demo installer ($DOWNLOAD_LINK)"
                POL_Download "$DOWNLOAD_LINK"
                INSTALLER="$POL_System_TmpDir/$DOWNLOAD_FILE"
                POL_Debug_Message "# INFO: demo program downloaded to $INSTALLER"
        fi
fi
if [[ -z "$INSTALLER" || ! -f "$INSTALLER" ]];then 
        MSG="ERROR: cannot locate installer >$INSTALLER< for $TITLE."
        POL_Debug_Message "# $MSG"
        POL_SetupWindow_message "$(eval_gettext '$MSG')" "$TITLE"
fi
# ---------------------
# check installer size
file_size_kb=`du -k "$INSTALLER" | cut -f1`
if [ "$file_size_kb" -lt 1000 ]; then
        POL_Debug_Fatal "# ERROR: Installer \(${INSTALLER}\) size \(${file_size_kb kb}\) is too small for a set-up file."
fi
return 0
}
# ==============================================================
registryLanguage()
# --------------------------------------------------------------
# set TablEdit language according to locale
# ==============================================================
{
LANG_VAL=0 # 0 - English (default)
LANG_CUR=`echo $LANG | cut -c 1-2`
[ \"$LANG_CUR\" = \"de\" ] && LANG_VAL=512  # 512 - German
[ \"$LANG_CUR\" = \"fr\" ] && LANG_VAL=256  # 256 - French
[ \"$LANG_CUR\" = \"es\" ] && LANG_VAL=768  # 768 - Spanish
[ \"$LANG_CUR\" = \"jp\" ] && LANG_VAL=1024 # 1024- Janpanese
echo "\"Language\"=\"$LANG_VAL\"" >> $FILE_USRREG
}
# ==============================================================
registryProgram()
# --------------------------------------------------------------
# update registry with user registeration info
# ==============================================================
{
if [ "$USE_REGISTERED_VERSION" = "1" ]; then
        POL_Debug_Message "# INFO: register Password, UserName"
        echo -e "\"UserName\"=\""$TE_USR"\"\n\"Password\"=\""$TE_PWD"\"" >> $FILE_USRREG
        FOUND=`fgrep '\"Password\"' $FILE_USRREG`
        [ ! -z "$FOUND" ] && POL_Debug_Message "# INFO: registered"
fi
}
# ==============================================================
registryWindows()
# --------------------------------------------------------------
# We clean up scattered windows of regular install and
# update registry with user preferences (colors, windows)
# ==============================================================
{
POL_Debug_Message "# INFO: register windows"
echo "\"Colorsv3\"=\"0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0xff,0xdbecec,0xdff0f5,0x0,\"" >> $FILE_USRREG
echo "\"Palette1\"=\"326,76,104,118,0,27,465,28,53,233,20,1,132,0\"" >> $FILE_USRREG
echo "\"Palette2\"=\"597,76,104,118,511,27,465,28,53,233,20,1,132,0\"" >> $FILE_USRREG
echo "\"Palette3\"=\"432,76,104,49,984,27,189,28,53,95,8,1,132,0\"" >> $FILE_USRREG
echo "\"Palette4\"=\"491,76,104,72,0,219,281,28,53,141,12,1,148,0\"" >> $FILE_USRREG
echo "\"Palette5\"=\"492,173,104,95,885,102,373,28,53,187,16,1,148,0\"" >> $FILE_USRREG
echo "\"Palette6\"=\"706,76,104,141,0,27,101,141,101,141,1,1,148,0\"" >> $FILE_USRREG
echo "\"Palette7\"=\"162,383,551,58,0,637,551,60,553,58,1,1,24,0\"" >> $FILE_USRREG
echo -e "\"ScrOutput\"=\"001001110000=1W1:>899<>7F001P040S@//210000000000\"" >> $FILE_USRREG
}
# ==============================================================
getRegistryExists()
# --------------------------------------------------------------
# check if registry is valid for the installed program
# 0: not existing
# 1: existing
# ==============================================================
{
REGISTRY_EXISTS=0
# ---------------------
# check user.reg exists
FILE_USRREG="$WINEPREFIX/user.reg"
[ ! -f "$FILE_USRREG" ] && POL_Debug_Fatal "# ERROR: file not found $FILE_USRREG"
# ---------------------
# check system.reg exists
FILE_SYSREG="$WINEPREFIX/system.reg"
[ ! -f "$FILE_SYSREG" ] && POL_Debug_Fatal "# ERROR: file not found $FILE_SYSREG"
# ---------------------
# check user.reg key exists
FOUND="`fgrep '\\TablEdit' $FILE_USRREG`" 
[ -z "$FOUND" ] && POL_Debug_Message "# WARNING: key \\TablEdit does not yet exist\n(Wine may still need time to flush the file)\n$FILE_USRREG." && return 0
# ---------------------
# return success
REGISTRY_EXISTS=1
return "$REGISTRY_EXISTS"
}
# ==============================================================
waitsec()
# --------------------------------------------------------------
# sleep function with some debug message
# ==============================================================
{
P1="$1"
[[ -z "$P1" || "$P1" = 0 ]] && return 0
POL_Debug_Message "# let's wait $P1 seconds"
sleep "$P1"
}
# ==============================================================
updateRegistry()
# --------------------------------------------------------------
# update registry with some program settings
# color, windows position, user registration info, language
# The installers registry values do need time to show. 
# So, if we do not find them, let's wait a while.
# ==============================================================
{
# - - - - - - - - - - - - - -
# validate registry exists
REGISTRY_EXISTS=0
getRegistryExists
typeset -i iCount=0 iMax=4
while [[ "$REGISTRY_EXISTS" = 0 && $iCount -lt $iMax ]]; do
        iCount=iCount+1
        POL_Debug_Message "# WARNING: waiting for registry $iCount"
        waitsec 4
        getRegistryExists
done
[ "$REGISTRY_EXISTS" = 0 ] && POL_Debug_Message "# WARNING: getRegistryExists - returned 0"
FILE_USRREG="$WINEPREFIX/user.reg"
# - - - - - - - - - - - - - -
# add to registry: Password, UserName, Windows, Language
POL_Debug_Message "# INFO: add registy keys Software\\\\\\\\TablEdit"
echo "[Software\\\\\\\\TablEdit\\\\\\\\TablEdit]" >> $FILE_USRREG
registryProgram
registryWindows
registryLanguage
echo -e "\n" >> $FILE_USRREG
}
# ==============================================================
getVersion()
# --------------------------------------------------------------
# read installed version from system.reg
# if not found, retry some times, then get remote version
# ==============================================================
{
REGISTRY_EXISTS=0
# ----------------------------------
# validate registry
getRegistryExists
typeset -i iCount=0 iMax=4
while [[ "$REGISTRY_EXISTS" = 0 && $iCount -lt $iMax ]]; do
        iCount=iCount+1
        POL_Debug_Message "# WARNING: waiting for registry $iCount"
        waitsec 4
        getRegistryExists 
done
[ "$REGISTRY_EXISTS" = 0 ] && POL_Debug_Message "# WARNING: getRegistryExists returned 0"
# ----------------------------------
# get Version Info from system.reg
cd "$WINEPREFIX" || POL_Debug_Fatal "# ERROR: Unable to change directory"
RESULT1=`fgrep -A 1 '"DisplayName"="TablEdit' system.reg  | grep -A 0 '"DisplayVersion"' `
[ ! -z "$RESULT1" ] && VERSION_INSTALLED=`echo $RESULT1 | cut -d '"' -f 4 `
if [ -z "$VERSION_INSTALLED" ]; then
# ----------------------------------
# get remote Version
        POL_Debug_Warning "# WARNING: 'DisplayVersion TablEdit' not found in system.reg"
        getVersionRemote
        POL_Debug_Warning "# WARNING: using remote demo version ($VERSION_REMOTE) as a fallback"
        VERSION_INSTALLED="$VERSION_REMOTE" 
fi
# POL_Debug_Message "# VERSION_INSTALLED=$VERSION_INSTALLED"
# VER_LEN="${#VERSION_INSTALLED}"
# POL_Debug_Message "# LEN=$VER_LEN"
}
# ==============================================================
createShortcut()
# --------------------------------------------------------------
# 1. get installed version
# 2. remove previous desktop starter
# 3. remove previous POL shortcut
# 4. add POL shortcut with version info
# 5. add timidity to POL shortcut
# ==============================================================
{
# -------------------
POL_Debug_Message "# get program version"
getVersion
POL_Debug_Message "# VERSION_INSTALLED: $VERSION_INSTALLED"
LAUNCHER="$TITLE"
[ ! -z "$VERSION_INSTALLED" ] && LAUNCHER="$LAUNCHER-v$VERSION_INSTALLED"
POL_Debug_Message "# LAUNCHER: $LAUNCHER"
# -------------------
PATH_SHORTCUT="$POL_USER_ROOT/shortcuts/$LAUNCHER"
if [ ! -f "$PATH_SHORTCUT" ];then
        # -------------------
        POL_Debug_Message "# remove any previous desktop starter"
        LINUX_DESKTOP=`xdg-user-dir DESKTOP`
        PATH_SHORTCUT="$LINUX_DESKTOP/$TITLE"
        rm -r "$PATH_SHORTCUT"* 2>/dev/null;
        rm -r $HOME/.local/share/applications/*$TITLE* 2>/dev/null;
        # -------------------
        POL_Debug_Message "# remove previous POL shortcut"
        PATH_SHORTCUT="$POL_USER_ROOT/shortcuts/$TITLE"
        rm -r "$PATH_SHORTCUT"* 2>/dev/null;
        # -------------------
        POL_Debug_Message "# create POL shortcut"
        POL_Shortcut "$EXECUTABLE_FILE" "$LAUNCHER" "" "" "AudioVideo;Audio;AudioVideoEditing;Music;"
        # -------------------
        PATH_SHORTCUT="$POL_USER_ROOT/shortcuts/$LAUNCHER"
fi
[ -f "$PATH_SHORTCUT" ] && MSG="$LAUNCHER installation ok" && POL_Debug_Message "# $MSG"
# ===================
# Add timidity to POL shortcut
POL_Debug_Message "# Adding TiMidity to POL shortcut $PATH_SHORTCUT"
TIMIDITY_APP=`which timidity`
[ -z "$TIMIDITY_APP" ] && POL_Debug_Warning "# no timidity found" && return -1
if [ -z "`fgrep timidity $PATH_SHORTCUT`" ];then
        STARTTIMIDITY="[ -z \"\`pstree | grep timidity\`\" ] \&\& timidity -iA -B2,8 -Os1l -s 44100 \&"
        echo "s+POL_Wine*+$STARTTIMIDITY\nPOL_Wine+g" > $POL_System_TmpDir/SED_CMD
        sed -i -f $POL_System_TmpDir/SED_CMD $PATH_SHORTCUT
fi
return 0
}
######################
# MAIN
IMAGE_TOP="https://tabledit.com/css/img/header1.jpg"
IMAGE_LEFT="https://tabledit.com/ios/TEFpad.ios.logo.175x175-75.jpg"
POL_GetSetupImages --force  "$IMAGE_TOP" "$IMAGE_LEFT" "$TITLE"
POL_SetupWindow_Init
POL_Debug_Init
POL_Debug_Message "# show POL Window"
POL_SetupWindow_presentation "$TITLE" "$EDITOR" "$EDITOR_URL" "$AUTHOR" "$PREFIX"
Set_OS "win7"
# ---------------------
POL_Debug_Message "# create PREFIX environment"
POL_Wine_SelectPrefix "$PREFIX"
POL_System_SetArch "x86"
POL_Wine_PrefixCreate
Set_OS "win7"
POL_System_TmpCreate "$PREFIX"
PWD_OLD=`pwd`
cd "$POL_System_TmpDir" || POL_Debug_Fatal "# ERROR: Unable to change directory"
POL_Debug_Message "# WINEPREFIX: $WINEPREFIX"
POL_Debug_Message "# PREFIX: $PREFIX"
POL_Debug_Message "# POL_System_TmpDir: $POL_System_TmpDir"
# ===================
POL_Debug_Message "# USER CHOICE: registered or preview"
getRegisteredOrPreview
# ---------------------
POL_Debug_Message "# get Installer local or download"
getInstallerLocalDownload
# ===================
POL_Debug_Message "# check TiMidity is available"
TIMIDITY_APP=`which timidity`
if [ -z "$TIMIDITY_APP" ];then
        MSG="For $TITLE to run, we recommend you install TiMidity on your system first.\nPlease open a terminal and execute this command line:\n
        sudo apt-get -y install timidity\n\nThen continue or restart this POL installation.\n"
        POL_SetupWindow_message "$(eval_gettext '$MSG')"
fi
# ===================
POL_Debug_Message "# start wine installation ("$INSTALLER")"
MSG="Installation in progress."
POL_SetupWindow_wait "$(eval_gettext '$MSG')" ""
POL_Wine "$INSTALLER"
POL_Debug_Message "# confirm the executable - tabledit.exe or tableditdemo.exe exists"
FOUND=`find $WINEPREFIX -name "$EXECUTABLE_FILE" -print`
[ -z "$FOUND" ] && POL_Debug_Fatal "# ERROR: $EXECUTABLE_FILE not found in $WINEPREFIX"
# ===================
POL_Debug_Message "# finalize installation"
updateRegistry
createShortcut
POL_System_TmpDelete
POL_SetupWindow_Close
exit

Odpowiedzi

Saturday 1 May 2021 at 17:52
Script approved.

Edytowane przez VolkerFroehlich

VolkerFroehlich Wednesday 19 August 2020 at 17:23
VolkerFroehlich

Warning

This update has not been approved yet by the team.
Use it at your own risk

Wiadmości

Hi Guys,
I have implemented the improvements and fixed the wine-5.0.2 issue I encountered on Ubuntu 20.04.

The code now runs stable on both Ubuntu 19.10 and 20.04.1.


 

Differences

@@ -1,121 +1,107 @@
 #!/usr/bin/env playonlinux-bash
 # Date : (2020-08-17 23:57)
-# Last revision : (2020-08-18 02:40)
+# Last revision : (2020-08-19 17:20)
 # Wine version used : 5.0.2
-# Distribution used to test : Ubuntu 19.10
+# Distribution used to test : Ubuntu 19.10, 20.04.1 LTS
 # Author : VolkerFröhlich
 # PlayOnLinux : 4.3.4
 # Script licence : GPL3
 # Program licence : Free/Retail
-##################
-# code ideas:
-# 1-TiMidity installation requires sudo
-#   sudo apt-get install -y timidity
-# 2-create a bash script 'start_tabledit3.sh'
-#   for app launch with TiMidity
-#   echo "timidity -iA -B2,8 -Os1l -s 44100 & playonlinux --run \"TablEdit3\"" > start_tabledit3.sh
-# 3-Patch TablEdit3.desktop
-#   DESKTOP_PATH="`xdg-user-dir DESKTOP`/TablEdit3.desktop"
-#   if [ -f "$DESKTOP_PATH" ] && [ -z "`fgrep start_tabledit3 $DESKTOP_PATH`" ];then
-#        sed -i 's+Exec=/usr/share/playonlinux/playonlinux --run "TablEdit3" %F+#Exec=/usr/share/playonlinux/playonlinux --run "TablEdit3" %F\nExec=start_tabledit3.sh+g' $DESKTOP_PATH
-#   fi
-##################
 [ "$PLAYONLINUX" = "" ] && exit 0
 source "$PLAYONLINUX/lib/sources"
-
+ 
 TITLE="TablEdit3"
-
+ 
 PREFIX="tabledit3"
 AUTHOR="VolkerFröhlich"
 EDITOR="Matthieu Leschemelle"
 EDITOR_URL="https://tabledit.com/"
-
+ 
 EXECUTABLE_FILE="tableditdemo.exe"
 MD5=""
-
+ 
 # Starting the script
 POL_SetupWindow_Init
-                          
+                           
 # Starting debugging API
 POL_Debug_Init
-         
+          
 #POL_SetupWindow_SetID
 # Open dialogue box
 POL_SetupWindow_presentation "$TITLE" "$EDITOR" "$EDITOR_URL" "$AUTHOR" "$PREFIX"
 Set_OS "win7"
 POL_System_TmpCreate "$PREFIX"
-
+ 
 POL_SetupWindow_InstallMethod "LOCAL,DOWNLOAD"
-
+ 
 cd "$POL_System_TmpDir";
-if [ "$INSTALL_METHOD" = "LOCAL" ]
-then
-    POL_SetupWindow_browse "$(eval_gettext 'Please select the setup file to run.')" "$TITLE"
-    INSTALLER="$APP_ANSWER"
+##############################
+POL_Debug_Message "# select installer"
+if [ "$INSTALL_METHOD" = "LOCAL" ]; then
+	POL_SetupWindow_browse "$(eval_gettext 'Please select the setup file to run.')" "$TITLE"
+	INSTALLER="$APP_ANSWER"
+	POL_Debug_Message "# confirm the executable name"
+	if [ ! "`basename $INSTALLER`" = "tabled32.exe" ]; then
+		EXECUTABLE_FILE="tabledit.exe"
+	fi
+
 elif [ "$INSTALL_METHOD" = "DOWNLOAD" ]; then
-##################
-# code ideas:
-# for registered TablEdit user we need to enter user/password
-# and use wget to download
-#    POL_SetupWindow_question "Are you registered user?" "$TITLE";
-#    if [ "$APP_ANSWER" = "TRUE" ]; then
-#        DOWNLOAD_LINK="https://tabledit.com/secured/tev300.exe"
-#        DOWNLOAD_FILE="tev300.exe"
-#        EXECUTABLE_FILE="tabledit.exe"
-#        CMD_SUDO="sudo wget --user=<user> --password=<password> $DOWNLOAD_LINK"
-#        `$CMD_SUDO`
-#    else
-##################
-DOWNLOAD_LINK=https://tabledit.com/download/tabled32.exe
-DOWNLOAD_FILE=$(basename "https://tabledit.com/download/tabled32.exe")
-POL_Download "$DOWNLOAD_LINK"
-#    fi
-INSTALLER="$POL_System_TmpDir/tabled32.exe"
+	DOWNLOAD_LINK=https://tabledit.com/download/tabled32.exe
+	DOWNLOAD_FILE=$(basename "https://tabledit.com/download/tabled32.exe")
+	POL_Download "$DOWNLOAD_LINK"
+	INSTALLER="$POL_System_TmpDir/tabled32.exe"
 fi
-
-# Setting prefix path
+ 
+##############################
+POL_Debug_Message "# Set prefix"
 POL_Wine_SelectPrefix "$PREFIX"
+POL_Debug_Message "# setting WINEARCH to win32"
+POL_System_SetArch "x86"
 POL_Wine_PrefixCreate
 
-POL_SetupWindow_message "$(eval_gettext 'For $TITLE to run, you should make sure TiMidity is installed on your system:\n sudo apt-get -y install timidity')"
-
+##############################
+POL_Debug_Message "# check TiMidity is available"
+TIMIDITY_APP=`which timidity`
+if [ -z "$TIMIDITY_APP" ];then
+	MSG="For $TITLE to run, we recommend you install TiMidity on your system first.\nPlease open a terminal and execute this command line:\n
+	sudo apt-get -y install timidity\n\nThen continue or restart this POL installation.\n"
+	POL_SetupWindow_message "$(eval_gettext '$MSG')"
+fi
 
-POL_SetupWindow_wait "$(eval_gettext 'Installation in progress.\n Do NOT launch the program and first let finish this script.')" "$TITLE"
-
-##################
-# HACK: START
-#       We create the shortcut based on a dummy exe.
-#       This avoids this script ends prematurely,
-#       if the user is launching the executable during installation
-#
-# manually create the TablEdit progamm directory
-cd "$HOME/.PlayOnLinux/wineprefix/$PREFIX/drive_c" 2>/dev/null;
-mkdir "Program Files (x86)" 2>/dev/null;
-cd "Program Files (x86)" 2>/dev/null;
-mkdir "TablEdit" 2>/dev/null;
-cd "TablEdit" 2>/dev/null;
-# copy the dummy file
-cp "$INSTALLER" "./$EXECUTABLE_FILE" 2>/dev/null;
-# create the shortcut
-POL_Shortcut "$EXECUTABLE_FILE" "$TITLE" "" "" "AudioVideo;Audio;AudioVideoEditing;Music;"
-# remove the TablEdit progamm directory
-cd .. 2>/dev/null;
-rm -r "TablEdit" 2>/dev/null;
-cd "$POL_System_TmpDir";
-# HACK: END
-##################
+##############################
+POL_Debug_Message "# start wine installation"
+MSG="Installation in progress."
+POL_SetupWindow_wait "$(eval_gettext '$MSG')" "$TITLE"
 
 POL_Wine "$INSTALLER"
 
-##################
-# The code below may never be reached.
-# If the application launches directly
-# during install, this scripts exits.
+POL_Debug_Message "# confirm the executable exists"
+if [ -z `find $WINEPREFIX -name "$EXECUTABLE_FILE" -print` ]; then
+	POL_Debug_Fatal "$EXECUTABLE_FILE not found in $WINEPREFIX"
+fi
 
 POL_Shortcut "$EXECUTABLE_FILE" "$TITLE" "" "" "AudioVideo;Audio;AudioVideoEditing;Music;"
- 
-POL_System_TmpDelete
 
+##############################
+# Add timidity to POL shortcut
+TIMIDITY_APP=`which timidity`
+if [ ! -z "$TIMIDITY_APP" ];then
+	POL_TITLE_PATH="$POL_USER_ROOT/shortcuts/$TITLE"
+	POL_Debug_Message "# Adding TiMidity to POL shortcut $POL_TITLE_PATH"
+	if [ ! -f "$POL_TITLE_PATH" ];then
+		POL_Debug_Warning "file not found: $POL_TITLE_PATH"
+	else
+		if [ -z "`fgrep timidity $POL_TITLE_PATH`" ];then
+			STARTTIMIDITY="[ -z \"\`pstree | grep timidity\`\" ] \&\& timidity -iA -B2,8 -Os1l -s 44100 \&"
+			echo "s+POL_Wine*+$STARTTIMIDITY\nPOL_Wine+g" > $POL_System_TmpDir/SED_CMD
+			sed -i -f $POL_System_TmpDir/SED_CMD $POL_TITLE_PATH
+		fi
+	fi
+fi
+
+##############################
+POL_Debug_Message "# delete temp directory"
+POL_System_TmpDelete
+ 
 POL_SetupWindow_Close
 exit
-

New source code

#!/usr/bin/env playonlinux-bash
# Date : (2020-08-17 23:57)
# Last revision : (2020-08-19 17:20)
# Wine version used : 5.0.2
# Distribution used to test : Ubuntu 19.10, 20.04.1 LTS
# Author : VolkerFröhlich
# PlayOnLinux : 4.3.4
# Script licence : GPL3
# Program licence : Free/Retail
[ "$PLAYONLINUX" = "" ] && exit 0
source "$PLAYONLINUX/lib/sources"
 
TITLE="TablEdit3"
 
PREFIX="tabledit3"
AUTHOR="VolkerFröhlich"
EDITOR="Matthieu Leschemelle"
EDITOR_URL="https://tabledit.com/"
 
EXECUTABLE_FILE="tableditdemo.exe"
MD5=""
 
# Starting the script
POL_SetupWindow_Init
                           
# Starting debugging API
POL_Debug_Init
          
#POL_SetupWindow_SetID
# Open dialogue box
POL_SetupWindow_presentation "$TITLE" "$EDITOR" "$EDITOR_URL" "$AUTHOR" "$PREFIX"
Set_OS "win7"
POL_System_TmpCreate "$PREFIX"
 
POL_SetupWindow_InstallMethod "LOCAL,DOWNLOAD"
 
cd "$POL_System_TmpDir";
##############################
POL_Debug_Message "# select installer"
if [ "$INSTALL_METHOD" = "LOCAL" ]; then
        POL_SetupWindow_browse "$(eval_gettext 'Please select the setup file to run.')" "$TITLE"
        INSTALLER="$APP_ANSWER"
        POL_Debug_Message "# confirm the executable name"
        if [ ! "`basename $INSTALLER`" = "tabled32.exe" ]; then
                EXECUTABLE_FILE="tabledit.exe"
        fi

elif [ "$INSTALL_METHOD" = "DOWNLOAD" ]; then
        DOWNLOAD_LINK=https://tabledit.com/download/tabled32.exe
        DOWNLOAD_FILE=$(basename "https://tabledit.com/download/tabled32.exe")
        POL_Download "$DOWNLOAD_LINK"
        INSTALLER="$POL_System_TmpDir/tabled32.exe"
fi
 
##############################
POL_Debug_Message "# Set prefix"
POL_Wine_SelectPrefix "$PREFIX"
POL_Debug_Message "# setting WINEARCH to win32"
POL_System_SetArch "x86"
POL_Wine_PrefixCreate

##############################
POL_Debug_Message "# check TiMidity is available"
TIMIDITY_APP=`which timidity`
if [ -z "$TIMIDITY_APP" ];then
        MSG="For $TITLE to run, we recommend you install TiMidity on your system first.\nPlease open a terminal and execute this command line:\n
        sudo apt-get -y install timidity\n\nThen continue or restart this POL installation.\n"
        POL_SetupWindow_message "$(eval_gettext '$MSG')"
fi

##############################
POL_Debug_Message "# start wine installation"
MSG="Installation in progress."
POL_SetupWindow_wait "$(eval_gettext '$MSG')" "$TITLE"

POL_Wine "$INSTALLER"

POL_Debug_Message "# confirm the executable exists"
if [ -z `find $WINEPREFIX -name "$EXECUTABLE_FILE" -print` ]; then
        POL_Debug_Fatal "$EXECUTABLE_FILE not found in $WINEPREFIX"
fi

POL_Shortcut "$EXECUTABLE_FILE" "$TITLE" "" "" "AudioVideo;Audio;AudioVideoEditing;Music;"

##############################
# Add timidity to POL shortcut
TIMIDITY_APP=`which timidity`
if [ ! -z "$TIMIDITY_APP" ];then
        POL_TITLE_PATH="$POL_USER_ROOT/shortcuts/$TITLE"
        POL_Debug_Message "# Adding TiMidity to POL shortcut $POL_TITLE_PATH"
        if [ ! -f "$POL_TITLE_PATH" ];then
                POL_Debug_Warning "file not found: $POL_TITLE_PATH"
        else
                if [ -z "`fgrep timidity $POL_TITLE_PATH`" ];then
                        STARTTIMIDITY="[ -z \"\`pstree | grep timidity\`\" ] \&\& timidity -iA -B2,8 -Os1l -s 44100 \&"
                        echo "s+POL_Wine*+$STARTTIMIDITY\nPOL_Wine+g" > $POL_System_TmpDir/SED_CMD
                        sed -i -f $POL_System_TmpDir/SED_CMD $POL_TITLE_PATH
                fi
        fi
fi

##############################
POL_Debug_Message "# delete temp directory"
POL_System_TmpDelete
 
POL_SetupWindow_Close
exit

Odpowiedzi

Thursday 20 August 2020 at 9:32
script approved.
Dadu042 Tuesday 18 August 2020 at 6:03
Dadu042

Warning

This update has not been approved yet by the team.
Use it at your own risk

Differences

@@ -0,0 +1,121 @@
+#!/usr/bin/env playonlinux-bash
+# Date : (2020-08-17 23:57)
+# Last revision : (2020-08-18 02:40)
+# Wine version used : 5.0.2
+# Distribution used to test : Ubuntu 19.10
+# Author : VolkerFröhlich
+# PlayOnLinux : 4.3.4
+# Script licence : GPL3
+# Program licence : Free/Retail
+##################
+# code ideas:
+# 1-TiMidity installation requires sudo
+#   sudo apt-get install -y timidity
+# 2-create a bash script 'start_tabledit3.sh'
+#   for app launch with TiMidity
+#   echo "timidity -iA -B2,8 -Os1l -s 44100 & playonlinux --run \"TablEdit3\"" > start_tabledit3.sh
+# 3-Patch TablEdit3.desktop
+#   DESKTOP_PATH="`xdg-user-dir DESKTOP`/TablEdit3.desktop"
+#   if [ -f "$DESKTOP_PATH" ] && [ -z "`fgrep start_tabledit3 $DESKTOP_PATH`" ];then
+#        sed -i 's+Exec=/usr/share/playonlinux/playonlinux --run "TablEdit3" %F+#Exec=/usr/share/playonlinux/playonlinux --run "TablEdit3" %F\nExec=start_tabledit3.sh+g' $DESKTOP_PATH
+#   fi
+##################
+[ "$PLAYONLINUX" = "" ] && exit 0
+source "$PLAYONLINUX/lib/sources"
+
+TITLE="TablEdit3"
+
+PREFIX="tabledit3"
+AUTHOR="VolkerFröhlich"
+EDITOR="Matthieu Leschemelle"
+EDITOR_URL="https://tabledit.com/"
+
+EXECUTABLE_FILE="tableditdemo.exe"
+MD5=""
+
+# Starting the script
+POL_SetupWindow_Init
+                          
+# Starting debugging API
+POL_Debug_Init
+         
+#POL_SetupWindow_SetID
+# Open dialogue box
+POL_SetupWindow_presentation "$TITLE" "$EDITOR" "$EDITOR_URL" "$AUTHOR" "$PREFIX"
+Set_OS "win7"
+POL_System_TmpCreate "$PREFIX"
+
+POL_SetupWindow_InstallMethod "LOCAL,DOWNLOAD"
+
+cd "$POL_System_TmpDir";
+if [ "$INSTALL_METHOD" = "LOCAL" ]
+then
+    POL_SetupWindow_browse "$(eval_gettext 'Please select the setup file to run.')" "$TITLE"
+    INSTALLER="$APP_ANSWER"
+elif [ "$INSTALL_METHOD" = "DOWNLOAD" ]; then
+##################
+# code ideas:
+# for registered TablEdit user we need to enter user/password
+# and use wget to download
+#    POL_SetupWindow_question "Are you registered user?" "$TITLE";
+#    if [ "$APP_ANSWER" = "TRUE" ]; then
+#        DOWNLOAD_LINK="https://tabledit.com/secured/tev300.exe"
+#        DOWNLOAD_FILE="tev300.exe"
+#        EXECUTABLE_FILE="tabledit.exe"
+#        CMD_SUDO="sudo wget --user=<user> --password=<password> $DOWNLOAD_LINK"
+#        `$CMD_SUDO`
+#    else
+##################
+DOWNLOAD_LINK=https://tabledit.com/download/tabled32.exe
+DOWNLOAD_FILE=$(basename "https://tabledit.com/download/tabled32.exe")
+POL_Download "$DOWNLOAD_LINK"
+#    fi
+INSTALLER="$POL_System_TmpDir/tabled32.exe"
+fi
+
+# Setting prefix path
+POL_Wine_SelectPrefix "$PREFIX"
+POL_Wine_PrefixCreate
+
+POL_SetupWindow_message "$(eval_gettext 'For $TITLE to run, you should make sure TiMidity is installed on your system:\n sudo apt-get -y install timidity')"
+
+
+POL_SetupWindow_wait "$(eval_gettext 'Installation in progress.\n Do NOT launch the program and first let finish this script.')" "$TITLE"
+
+##################
+# HACK: START
+#       We create the shortcut based on a dummy exe.
+#       This avoids this script ends prematurely,
+#       if the user is launching the executable during installation
+#
+# manually create the TablEdit progamm directory
+cd "$HOME/.PlayOnLinux/wineprefix/$PREFIX/drive_c" 2>/dev/null;
+mkdir "Program Files (x86)" 2>/dev/null;
+cd "Program Files (x86)" 2>/dev/null;
+mkdir "TablEdit" 2>/dev/null;
+cd "TablEdit" 2>/dev/null;
+# copy the dummy file
+cp "$INSTALLER" "./$EXECUTABLE_FILE" 2>/dev/null;
+# create the shortcut
+POL_Shortcut "$EXECUTABLE_FILE" "$TITLE" "" "" "AudioVideo;Audio;AudioVideoEditing;Music;"
+# remove the TablEdit progamm directory
+cd .. 2>/dev/null;
+rm -r "TablEdit" 2>/dev/null;
+cd "$POL_System_TmpDir";
+# HACK: END
+##################
+
+POL_Wine "$INSTALLER"
+
+##################
+# The code below may never be reached.
+# If the application launches directly
+# during install, this scripts exits.
+
+POL_Shortcut "$EXECUTABLE_FILE" "$TITLE" "" "" "AudioVideo;Audio;AudioVideoEditing;Music;"
+ 
+POL_System_TmpDelete
+
+POL_SetupWindow_Close
+exit
+

New source code

#!/usr/bin/env playonlinux-bash
# Date : (2020-08-17 23:57)
# Last revision : (2020-08-18 02:40)
# Wine version used : 5.0.2
# Distribution used to test : Ubuntu 19.10
# Author : VolkerFröhlich
# PlayOnLinux : 4.3.4
# Script licence : GPL3
# Program licence : Free/Retail
##################
# code ideas:
# 1-TiMidity installation requires sudo
#   sudo apt-get install -y timidity
# 2-create a bash script 'start_tabledit3.sh'
#   for app launch with TiMidity
#   echo "timidity -iA -B2,8 -Os1l -s 44100 & playonlinux --run \"TablEdit3\"" > start_tabledit3.sh
# 3-Patch TablEdit3.desktop
#   DESKTOP_PATH="`xdg-user-dir DESKTOP`/TablEdit3.desktop"
#   if [ -f "$DESKTOP_PATH" ] && [ -z "`fgrep start_tabledit3 $DESKTOP_PATH`" ];then
#        sed -i 's+Exec=/usr/share/playonlinux/playonlinux --run "TablEdit3" %F+#Exec=/usr/share/playonlinux/playonlinux --run "TablEdit3" %F\nExec=start_tabledit3.sh+g' $DESKTOP_PATH
#   fi
##################
[ "$PLAYONLINUX" = "" ] && exit 0
source "$PLAYONLINUX/lib/sources"

TITLE="TablEdit3"

PREFIX="tabledit3"
AUTHOR="VolkerFröhlich"
EDITOR="Matthieu Leschemelle"
EDITOR_URL="https://tabledit.com/"

EXECUTABLE_FILE="tableditdemo.exe"
MD5=""

# Starting the script
POL_SetupWindow_Init
                          
# Starting debugging API
POL_Debug_Init
         
#POL_SetupWindow_SetID
# Open dialogue box
POL_SetupWindow_presentation "$TITLE" "$EDITOR" "$EDITOR_URL" "$AUTHOR" "$PREFIX"
Set_OS "win7"
POL_System_TmpCreate "$PREFIX"

POL_SetupWindow_InstallMethod "LOCAL,DOWNLOAD"

cd "$POL_System_TmpDir";
if [ "$INSTALL_METHOD" = "LOCAL" ]
then
    POL_SetupWindow_browse "$(eval_gettext 'Please select the setup file to run.')" "$TITLE"
    INSTALLER="$APP_ANSWER"
elif [ "$INSTALL_METHOD" = "DOWNLOAD" ]; then
##################
# code ideas:
# for registered TablEdit user we need to enter user/password
# and use wget to download
#    POL_SetupWindow_question "Are you registered user?" "$TITLE";
#    if [ "$APP_ANSWER" = "TRUE" ]; then
#        DOWNLOAD_LINK="https://tabledit.com/secured/tev300.exe"
#        DOWNLOAD_FILE="tev300.exe"
#        EXECUTABLE_FILE="tabledit.exe"
#        CMD_SUDO="sudo wget --user=<user> --password=<password> $DOWNLOAD_LINK"
#        `$CMD_SUDO`
#    else
##################
DOWNLOAD_LINK=https://tabledit.com/download/tabled32.exe
DOWNLOAD_FILE=$(basename "https://tabledit.com/download/tabled32.exe")
POL_Download "$DOWNLOAD_LINK"
#    fi
INSTALLER="$POL_System_TmpDir/tabled32.exe"
fi

# Setting prefix path
POL_Wine_SelectPrefix "$PREFIX"
POL_Wine_PrefixCreate

POL_SetupWindow_message "$(eval_gettext 'For $TITLE to run, you should make sure TiMidity is installed on your system:\n sudo apt-get -y install timidity')"


POL_SetupWindow_wait "$(eval_gettext 'Installation in progress.\n Do NOT launch the program and first let finish this script.')" "$TITLE"

##################
# HACK: START
#       We create the shortcut based on a dummy exe.
#       This avoids this script ends prematurely,
#       if the user is launching the executable during installation
#
# manually create the TablEdit progamm directory
cd "$HOME/.PlayOnLinux/wineprefix/$PREFIX/drive_c" 2>/dev/null;
mkdir "Program Files (x86)" 2>/dev/null;
cd "Program Files (x86)" 2>/dev/null;
mkdir "TablEdit" 2>/dev/null;
cd "TablEdit" 2>/dev/null;
# copy the dummy file
cp "$INSTALLER" "./$EXECUTABLE_FILE" 2>/dev/null;
# create the shortcut
POL_Shortcut "$EXECUTABLE_FILE" "$TITLE" "" "" "AudioVideo;Audio;AudioVideoEditing;Music;"
# remove the TablEdit progamm directory
cd .. 2>/dev/null;
rm -r "TablEdit" 2>/dev/null;
cd "$POL_System_TmpDir";
# HACK: END
##################

POL_Wine "$INSTALLER"

##################
# The code below may never be reached.
# If the application launches directly
# during install, this scripts exits.

POL_Shortcut "$EXECUTABLE_FILE" "$TITLE" "" "" "AudioVideo;Audio;AudioVideoEditing;Music;"
 
POL_System_TmpDelete

POL_SetupWindow_Close
exit

Odpowiedzi