Skip to content

Instantly share code, notes, and snippets.

@randomchars42
Last active July 18, 2024 19:08
Show Gist options
  • Save randomchars42/a13db217a49f1af25b6aac4df66f058e to your computer and use it in GitHub Desktop.
Save randomchars42/a13db217a49f1af25b6aac4df66f058e to your computer and use it in GitHub Desktop.
Dateimanager und SoftwareUpdater für BookII von Tessloff unter (Ubuntu) Linux mit WINE
#!/bin/bash
path_working_dir="$HOME"
prefix="bookii"
# in diesem Verzeicnis soll die neue Bottle (=Prefix) entstehen
path_bottles="$path_working_dir/Bottles"
# in diesen Verzeichnissen liegen die benötigten Dateien
# - winetricks.sh (wird heruntergelade
# - BOOKiiSoftwareInstaller.exe (https://www.bookii.de/site/uploads/2019/03/BOOKiiSoftwareInstaller.zip)
# - BOOKii.exe (auf dem Stift oder [hier](blog.pixelwoelkchen.de/assets/Bookii.zip))
path_lib="$path_working_dir/bookii"
path_bookii_installer="$path_lib/BOOKiiSoftwareInstaller.exe"
path_bookii_manager="$path_lib/Bookii.exe"
path_winetricks="$path_lib/winetricks.sh"
# setzt das WINEPREFIX (= Bottle) für die Dauer des Skripts
export WINEPREFIX="$path_bottles/$prefix"
# vermeidet Probleme mit dotnet, Dank an @der-martin85
export WINEARCH=win32
# neues Prefix erstellen und .NET installieren
function install_dependencies {
# wenn noch kein Prefix vorhanden ist
if [[ ! -e "$path_wine/$prefix" ]]
then
# wird es erstellt und die Konfiguration aufgerufen
# hier wird windows 8.1 eingestellt, Dank an @der-martin85
winecfg -v win81
# "Neustart" des Systems
wine wineboot
# .NET 4.6 mit Winetricks installieren
# ! akzeptiert automatisch die EULA !
"$path_winetricks" -q dotnet46
fi
}
# Winetricks bereitstellen
function install_winetricks {
if [[ ! -e "$path_winetricks" ]]
then
path="$(dirname $path_winetricks)"
echo "$path"
# erstelle das Verzeichnis falls nötig
[[ ! -e "$path" ]] && mkdir -p "$path"
# Winetricks herunterladen
wget -r -c -N https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks -O "$path_winetricks"
chmod +x "$path_winetricks"
fi
}
# startet den Updater
function update_bookii {
# checke ob das Verzeichnis existiert
path="$(dirname $path_bookii_installer)"
[[ ! -e "$path" ]] && mkdir -p "$path"
# lade die Datei herunter
[[ ! -e "$path_bookii_installer" ]] &&
wget https://www.bookii.de/site/uploads/2019/03/BOOKiiSoftwareInstaller.zip -O "$path_bookii_installer.zip" &&
unzip "$path_bookii_installer.zip" -d "$path" &&
rm "$path_bookii_installer.zip"
wine "$path_bookii_installer"
}
# startet den Dateimanager
function run_bookii {
# checke ob das Verzeichnis existiert
path="$(dirname $path_bookii_manager)"
[[ ! -e "$path" ]] && mkdir -p "$path"
# lade die Datei herunter
[[ ! -e "$path_bookii_manager" ]] &&
wget -r -c -N http://blog.pixelwoelkchen.de/assets/Bookii.zip -O "$path_bookii_manager.zip" &&
unzip "$path_bookii_manager.zip" -d "$path" &&
rm "$path_bookii_manager.zip"
wine "$path_bookii_manager"
}
# der erste Parameter, der diesem Skript übergeben wird bestimmt, was ausgeführt wird
action="$1"
[[ -z "$action" ]] && echo "Was soll gemacht werden (start|update|install)" && exit 1
case "$action" in
start)
run_bookii
;;
update)
update_bookii
;;
tricks)
install_winetricks
"$path_winetricks"
;;
install)
install_winetricks
install_dependencies
;;
esac
@marc4s
Copy link

marc4s commented Jan 27, 2023

@randomchars42
Copy link
Author

Danke für den Hinweis - nun wieder da

@der-martin85
Copy link

Hi, danke für das Script. Ich würde noch empfehlen die WINEARCH=win32 zu setzen, da es sonst zu Problemen mit dotnet kommen kann. Bei mir hat die Firmware Aktualisierung geklappt, aber ich bekomme den Dateimanager nicht gestartet. Der Splashscreen wird kurz angezeigt, dann kommt
LOG FILE MANAGER An unhandled exception occurred: The invocation of the constructor on type 'Bookii.ViewModel.MainWindowViewModel' that matches the specified binding constraints threw an exception.
Ich benutze Ubuntu 22.10 und wine 8.5. Probiere noch ein wenig rum, ob ich es vielleicht doch zum laufen bekomme.

@der-martin85
Copy link

Zeile 26 würde ich übrigens noch durch das hier ersetzen, damit wirklich windows 8.1 eingestellt wird:
winecfg -v win81
den path_working_dir auf $HOME setzen, dann läuft das auch ohne anpassungen bei allen.
Und wie gesagt export WINEARCH=win32 nach dem setzen des WINEPREFIX einfügen.

@randomchars42
Copy link
Author

Hallo @der-martin85, vielen Dank für die Hinweise! Habs eingearbeitet. Läuft es bei Dir jetzt? Ich habs schon eine Weile nicht mehr getestet / nutzen müssen...

@der-martin85
Copy link

Leider noch nicht geschafft. Hab noch rumprobiert, ob eine andere dotnet Version hilft, aber bisher kein Erfolg. Wenn ich die BookiiUpdater.exe starte, bekomme ich wenigstens eine Exception angezeigt, aber was die Bedeutet, weiß ich leider auch nicht. Vermutlich hat es damit zu tun, dass das Gerät nicht richtig eingebunden ist. Auf dem Arbeitslaptop meiner Frau konnte ich sehen, dass der ja eigentlich noch ein zweites Laufwerk mit dem Programm anzeigt. Leider kann ich den Arbeitslaptop aber auch nicht verwenden, da der von der Firma so konfiguriert ist, dass nicht auf externe Geräte gespeichert werden kann.

Es ist echt schade, dass die einem solche Steine in den Weg legen. Ich mach das eigentlich auch gar nicht für mich gerade, sondern helfe in der Schulbibliothek aus. Da gibt es einen Stift und ein paar Bücher, aber nicht alle Bücher sind auf den Stift geladen. Hatte gehofft, dass es so funktioniert wie der Tiptoi, aber so werde ich das wohl jemand anderen machen lassen müssen.

@der-martin85
Copy link

der-martin85 commented Apr 3, 2023

Jetzt hab ichs. Ich hab das virtuelle CD ROM Laufwerk doch noch gefunden und mounten können. Mit der Bookii.exe von dem Gerät funktioniert es jetzt.
Vielen Dank dir nochmal!

P.S.: Für alle die an das gleiche Problem stoßen, ich hab eine Zusätzliche Funktion in das Script eingearbeitet:

function copy_bookii {
  [[ ! -e "$path_mount" ]] && mkdir -p "$path_mount"

  # checke ob das Verzeichnis existiert
  path="$(dirname $path_bookii_manager)"
  [[ ! -e "$path" ]] && mkdir -p "$path"

  sudo mount -o ro LABEL=BOOKII_APP "$path_mount" &&
    cp -uR "$path_mount"/* "$path" &&
    sudo umount "$path_mount" &&
    chmod 755 -R "$path"/*
}

Dafür muss der path_mount natürlich gesetzt sein. Ich habe am Anfang path_mount="$path_bottles/BOOKII_APP" gesetzt.
Außerdem noch folgendes in die case Anweisung am Ende eingefügt:

copy) copy_bookii ;;
Dann ist die Herangehensweise quasi erst
bookii.sh install
bookii.sh copy

und dann mit bookii.sh start

Man muss einmal das Passwort eingeben, damit das CD-ROM Laufwerk gemountet werden kann. Natürlich muss der Stift auch angeschlossen sein, wenn bookii.sh copy aufgerufen wird.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment