#!/bin/sh # One-shot installer for MicroslopSam. Runs all setup steps, idempotently: # 1. system dependencies (Wine, Winelib, helpers; needs sudo) # 2. wine prefix + SAPI4 runtime + MSTTS voices + registration # 3. Flextalk extraction + voices + registration # 4. host build (Winelib and PE) # 5. quick voice check # # Usage: setup/install.sh # Re-running is safe. set -eu HERE=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd) ROOT=$(CDPATH= cd -- "$HERE/.." && pwd) ASSETS=${ASSETS:-$ROOT/../Microsoft-Sam-Mary-Mike-TruVoice-WSAPI4} FLEXTALK_DIR=${FLEXTALK_DIR:-$ROOT/../flextalk} log() { printf '\n== %s\n' "$*"; } # 1) system dependencies ----------------------------------------------------- if [ "$(id -u)" = "0" ]; then log "installing system dependencies" "$HERE/install-deps.sh" else log "installing system dependencies (sudo)" sudo "$HERE/install-deps.sh" fi # 2) SAPI4 runtime + MSTTS voices -------------------------------------------- log "setting up wine prefix, SAPI4 runtime and MSTTS voices" "$HERE/setup-prefix.sh" "$ASSETS" # 3) Flextalk voices ---------------------------------------------------------- EXTRACTED="$FLEXTALK_DIR/extracted/TTS_Executables" if [ ! -d "$EXTRACTED/EngineDLLs" ]; then CAB="" for c in "$FLEXTALK_DIR/installer/flextalk/data1.cab" \ "$ASSETS/flextalk/data1.cab"; do if [ -f "$c" ]; then CAB="$c"; break; fi done if [ -z "$CAB" ]; then echo "Flextalk data1.cab not found; set FLEXTALK_DIR to the archive dir" >&2 exit 1 fi command -v unshield >/dev/null 2>&1 || { echo "unshield is required to extract the Flextalk installer" >&2 exit 1 } log "extracting Flextalk installer ($CAB)" rm -rf "$FLEXTALK_DIR/extracted" unshield -O -d "$FLEXTALK_DIR/extracted" x "$CAB" >/dev/null fi log "installing Flextalk voices" "$HERE/setup-flextalk.sh" "$EXTRACTED" # 4) host build --------------------------------------------------------------- log "building the host" mkdir -p "$ROOT/build" winegcc -m32 -O2 -o "$ROOT/build/sapi4host-winlib" "$ROOT/host/sapi4host.c" \ -I"$ROOT/../reference" -lole32 -luser32 -ladvapi32 if command -v i686-w64-mingw32-gcc >/dev/null 2>&1; then i686-w64-mingw32-gcc -O2 -static -o "$ROOT/build/sapi4host.exe" \ "$ROOT/host/sapi4host.c" -I"$ROOT/../reference" \ -lole32 -luser32 -ladvapi32 -luuid fi # 5) check -------------------------------------------------------------------- log "installed voices" "$HERE/run.sh" -l || true cat <