
################################################################

# バージョン入りファイル名

$milkyway_orig_filename = "milkyway.orig-v25.4.png"

################################################################

Set-StrictMode -version Latest

Add-Type -AssemblyName System.Windows.Forms

################################################################

Write-Host "//"
Write-Host "// INTERSTELLAR CONSOLE インストーラ (ps1)"
Write-Host "// Copyright (C) 2025- Misato Observatory, Wakayama, Japan"
Write-Host "//"
Write-Host ""

################################################################

try {
  cd "interstellar-console" -ErrorAction Stop
} catch {
  $text = "ネットワークドライブからのインストールはサポートしていません。パッケージすべてをローカルドライブやUSBドライブへコピーし、そこでsetup.exeを実行してください"
  $caption = "ERROR"
  $buttonsType = "OK"
  $iconType = "Error"
  $result = [System.Windows.Forms.MessageBox]::Show($text, $caption, $buttonsType, $iconType)
  exit 1
}

$currentDirectory = Get-Location
Write-Host "PACKAGE: $currentDirectory"

$STELDIR     = "C:\Program Files\Stellarium"
$TEXTURESDIR = "$STELDIR\textures"
$SKYCULDIR   = "$STELDIR\skycultures"
$QMSKYCULDIR = "$STELDIR\translations\stellarium-skycultures"
$SSCDIR      = "$STELDIR\scripts"
$LANDSCDIR   = "$STELDIR\landscapes"

$flagNotFound = 0
if ( !(Test-Path -Path "$STELDIR" -PathType Container) ) {
  $flagNotFound = 1
}
if ( !(Test-Path -Path "$TEXTURESDIR" -PathType Container) ) {
  $flagNotFound = 1
}
if ( !(Test-Path -Path "$SKYCULDIR" -PathType Container) ) {
  $flagNotFound = 1
}
if ( !(Test-Path -Path "$QMSKYCULDIR" -PathType Container) ) {
  $flagNotFound = 1
}
if ( !(Test-Path -Path "$SSCDIR" -PathType Container) ) {
  $flagNotFound = 1
}
if ( !(Test-Path -Path "$LANDSCDIR" -PathType Container) ) {
  $flagNotFound = 1
}

if ( $flagNotFound -ne 0 ) {
  $text = "Stellariumが正常にインストールされていません。セットアップを中断します"
  $caption = "ERROR"
  $buttonsType = "OK"
  $iconType = "Error"
  $result = [System.Windows.Forms.MessageBox]::Show($text, $caption, $buttonsType, $iconType)
  exit 1
}

$DESTDIR = "$SSCDIR\interstellar-console"
Write-Host "DESTDIR: $DESTDIR"

if ( Test-Path -Path "$DESTDIR" ) {
  if ( !(Test-Path -Path "$DESTDIR" -PathType Container) ) {
    Write-Host "///////////////////////////////////////////////////////////////////"
    Write-Host "// ERROR: 予期せぬエラーが発生しました。セットアップを中断します //"
    Write-Host "///////////////////////////////////////////////////////////////////"
    Start-Sleep -Seconds 5
    exit 1
  }
} else {
  try {
    New-Item -Path "$DESTDIR" -ItemType Directory -ErrorAction Stop > $null
  } catch {
    $text = "ディレクトリの作成に失敗しました。セットアップを中断します"
    $caption = "ERROR"
    $buttonsType = "OK"
    $iconType = "Error"
    $result = [System.Windows.Forms.MessageBox]::Show($text, $caption, $buttonsType, $iconType)
    exit 1
  }
}

if ( !(Test-Path -Path "$DESTDIR\images") ) {
  try {
    New-Item -Path "$DESTDIR\images" -ItemType Directory -ErrorAction Stop > $null
  } catch {
    Write-Host "///////////////////////////////////////////////////////////////////////"
    Write-Host "// ERROR: ディレクトリの作成に失敗しました。セットアップを中断します //"
    Write-Host "///////////////////////////////////////////////////////////////////////"
    Start-Sleep -Seconds 5
    exit 1
  }
}

Write-Host "権限1を設定中..."

#cacls "$DESTDIR" /E /G Users:F
icacls "$DESTDIR" /grant "Users:(OI)(CI)F" /T /Q

Write-Host "権限2を設定中..."

#cacls "$TEXTURESDIR" /E /G Users:F
icacls "$TEXTURESDIR" /grant "Users:(OI)(CI)F" /T /Q

Write-Host "権限3を設定中..."

#cacls "$LANDSCDIR" /E /G Users:F
icacls "$LANDSCDIR" /grant "Users:(OI)(CI)F" /T /Q

Start-Sleep -Seconds 1


Write-Host "ソフトウェア本体をコピー中..."

if ( Test-Path -Path "..\VERSION.txt" ) {
  xcopy "..\VERSION.txt" "$DESTDIR\." /Q /Y /R
}
xcopy "*.exe" "$DESTDIR\." /Q /Y /R
xcopy "nircmd-x64\nircmd.exe" "$DESTDIR\." /Q /Y /R
xcopy "nkfwin\nkf.exe" "$DESTDIR\." /Q /Y /R
xcopy "*.tcl" "$DESTDIR\." /Q /Y /R
xcopy "splash*.gif" "$DESTDIR\." /Q /Y /R
xcopy "*.inc" "$DESTDIR\." /Q /Y /R
xcopy "*.ssc" "$DESTDIR\." /Q /Y /R
xcopy "*.ps1" "$DESTDIR\." /Q /Y /R
xcopy "*.sh" "$DESTDIR\." /Q /Y /R
xcopy "*.txt" "$DESTDIR\." /Q /Y /R
xcopy "images\*.*" "$DESTDIR\images\." /Q /Y /R
xcopy "media\*" "$DESTDIR\media\." /Q /Y /R /I /E
xcopy "examples\*" "$DESTDIR\examples\." /Q /Y /R /I /E
xcopy "milkyway\*" "$DESTDIR\milkyway\." /Q /Y /R /I /E
xcopy "landscapes\*" "$LANDSCDIR\." /Q /Y /R /I /E

Write-Host "日本語訳データをコピー中..."

if ( Test-Path -Path "$QMSKYCULDIR\ja.qm" ) {
  if ( !(Test-Path -Path "$QMSKYCULDIR\ja.qm.old") ) {
    Rename-Item "$QMSKYCULDIR\ja.qm" "ja.qm.old"
  }
}
xcopy "25.4\translations\ja.qm" "$QMSKYCULDIR\." /Q /Y /R

Write-Host "skycultures 'japanese_default-art' をコピー中..."

if ( !(Test-Path -Path "$SKYCULDIR\japanese_default-art") ) {
  try {
    New-Item -Path "$SKYCULDIR\japanese_default-art" -ItemType Directory -ErrorAction Stop > $null
  } catch {
    Write-Host "///////////////////////////////////////////////////////////////////////"
    Write-Host "// ERROR: ディレクトリの作成に失敗しました。セットアップを中断します //"
    Write-Host "///////////////////////////////////////////////////////////////////////"
    Start-Sleep -Seconds 5
    exit 1
  }
}
if ( !(Test-Path -Path "$SKYCULDIR\japanese_default-art\illustrations") ) {
  try {
    New-Item -Path "$SKYCULDIR\japanese_default-art\illustrations" -ItemType Directory -ErrorAction Stop > $null
  } catch {
    Write-Host "///////////////////////////////////////////////////////////////////////"
    Write-Host "// ERROR: ディレクトリの作成に失敗しました。セットアップを中断します //"
    Write-Host "///////////////////////////////////////////////////////////////////////"
    Start-Sleep -Seconds 5
    exit 1
  }
}
Copy-Item "25.4\japanese_default-art\japanese_default-art.json" "$SKYCULDIR\japanese_default-art\index.json" -Force
xcopy "25.4\japanese_default-art\description.md" "$SKYCULDIR\japanese_default-art\." /Q /Y /R
xcopy "$SKYCULDIR\modern\illustrations\*" "$SKYCULDIR\japanese_default-art\illustrations\." /Q /Y /R /I

Write-Host "オリジナル星座絵入りskycultures 'japanese_misato-art' をコピー中..."

if ( !(Test-Path -Path "$SKYCULDIR\japanese_misato-art") ) {
  try {
    New-Item -Path "$SKYCULDIR\japanese_misato-art" -ItemType Directory -ErrorAction Stop > $null
  } catch {
    Write-Host "///////////////////////////////////////////////////////////////////////"
    Write-Host "// ERROR: ディレクトリの作成に失敗しました。セットアップを中断します //"
    Write-Host "///////////////////////////////////////////////////////////////////////"
    Start-Sleep -Seconds 5
    exit 1
  }
}
if ( !(Test-Path -Path "$SKYCULDIR\japanese_misato-art\illustrations") ) {
  try {
    New-Item -Path "$SKYCULDIR\japanese_misato-art\illustrations" -ItemType Directory -ErrorAction Stop > $null
  } catch {
    Write-Host "///////////////////////////////////////////////////////////////////////"
    Write-Host "// ERROR: ディレクトリの作成に失敗しました。セットアップを中断します //"
    Write-Host "///////////////////////////////////////////////////////////////////////"
    Start-Sleep -Seconds 5
    exit 1
  }
}
Copy-Item "25.4\japanese_default-art\japanese_misato-art.json" "$SKYCULDIR\japanese_misato-art\index.json" -Force
xcopy "..\art\description.md" "$SKYCULDIR\japanese_misato-art\." /Q /Y /R
xcopy "..\art\*.png" "$SKYCULDIR\japanese_misato-art\illustrations\." /Q /Y /R

# 天の川のテクスチャーをコピー

$source_yes = "$DESTDIR\milkyway\milkyway.png"
$source_no  = "$DESTDIR\milkyway\$milkyway_orig_filename"
$dest_milkyway = "$TEXTURESDIR\milkyway.png"

$text = "全天周スクリーンへの投影に最適化された天の川のテクスチャーを`r`nインストールしますか？`r`nよくわからない場合、`r`n・Domeモードを主に使うなら「はい」`r`n・Navigationモードを主に使うなら「いいえ」`r`nを選んでください。`r`n天の川のテクスチャーは後でも変更できます。"
$caption = "Setup: Interstellar Console"
$buttonsType = "YesNo"
$iconType = "Information"
$result = [System.Windows.Forms.MessageBox]::Show($text, $caption, $buttonsType, $iconType)

if ( $result -eq "No" ) {
  Copy-Item "$source_no" "$dest_milkyway" -Force
} else {
  Copy-Item "$source_yes" "$dest_milkyway" -Force
}


Write-Host "Tcl/Tk-9用ソースファイルを作成中..."

if ( !(Test-Path -Path "$DESTDIR\tcl_utf8") ) {
  try {
    New-Item -Path "$DESTDIR\tcl_utf8" -ItemType Directory -ErrorAction Stop > $null
  } catch {
    Write-Host "///////////////////////////////////////////////////////////////////////"
    Write-Host "// ERROR: ディレクトリの作成に失敗しました。セットアップを中断します //"
    Write-Host "///////////////////////////////////////////////////////////////////////"
    Start-Sleep -Seconds 5
    exit 1
  }
}

.\nkfwin\nkf.exe -O -S -w base-proc.tcl "$DESTDIR\tcl_utf8\base-proc.tcl"
.\nkfwin\nkf.exe -O -S -w isc-proc.tcl "$DESTDIR\tcl_utf8\isc-proc.tcl"
.\nkfwin\nkf.exe -O -S -w local-config.tcl "$DESTDIR\tcl_utf8\local-config.tcl"
.\nkfwin\nkf.exe -O -S -w misato-gui.tcl "$DESTDIR\tcl_utf8\misato-gui.tcl"
.\nkfwin\nkf.exe -O -S -w date-gui.tcl "$DESTDIR\tcl_utf8\date-gui.tcl"
.\nkfwin\nkf.exe -O -S -w media-gui.tcl "$DESTDIR\tcl_utf8\media-gui.tcl"
.\nkfwin\nkf.exe -O -S -w date-monitor.tcl "$DESTDIR\tcl_utf8\date-monitor.tcl"


# デスクトップにショートカットを作成

. ".\create_isc_shortcuts.ps1"


################################################################

Write-Host "セットアップが完了しました！"

$text = "セットアップが完了しました！`r`n`r`n【お願い】`r`nわからない事や不具合があれば、遠慮せずに みさと天文台へ質問をお願いします。質問は、ソフトウェアの改良に大いに役立ちます。"
$caption = "Finished Setup"
$buttonsType = "OK"
$iconType = "Information"

$result = [System.Windows.Forms.MessageBox]::Show($text, $caption, $buttonsType, $iconType)

Start-Sleep -Seconds 1

