독립 control plane 구성을 위해 기존 Dart CLI/runtime을 runner 앱 경계로 옮기고, 후속 client/core/root 작업을 같은 마일스톤 task group에 연결한다.
62 lines
2.8 KiB
PowerShell
62 lines
2.8 KiB
PowerShell
$ErrorActionPreference = 'Stop' # Stop on all errors
|
|
|
|
# Define the package arguments
|
|
$packageArgs = @{
|
|
packageName = $env:ChocolateyPackageName
|
|
unzipLocation = Join-Path $env:LOCALAPPDATA 'com.toki-labs.oto' 'startup'
|
|
url = 'http://toki-labs.com/cdn/oto/windows/oto_x64_v[VERSION].zip'
|
|
url64bit = 'http://toki-labs.com/cdn/oto/windows/oto_x64_v[VERSION].zip'
|
|
checksum = '' # Optional: Provide checksum if available
|
|
checksumType = 'sha256' # Adjust if checksum is provided
|
|
validExitCodes= @(0) # Only exit code 0 is considered valid
|
|
}
|
|
|
|
# Ensure the destination folder exists
|
|
if (-Not (Test-Path -Path $packageArgs.unzipLocation)) {
|
|
New-Item -ItemType Directory -Path $packageArgs.unzipLocation -Force | Out-Null
|
|
}
|
|
|
|
# Use Chocolatey helper function to download and unzip the file
|
|
Install-ChocolateyZipPackage `
|
|
$packageArgs.packageName `
|
|
$packageArgs.url `
|
|
$packageArgs.unzipLocation `
|
|
-url64 $packageArgs.url64bit `
|
|
-checksum $packageArgs.checksum `
|
|
-checksumType $packageArgs.checksumType
|
|
|
|
# Add the oto.exe to the PATH environment variable
|
|
$otoPath = $packageArgs.unzipLocation
|
|
if (Test-Path -Path $otoPath) {
|
|
Write-Host "Adding $otoPath to the PATH environment variable..."
|
|
$currentPath = [System.Environment]::GetEnvironmentVariable('Path', [System.EnvironmentVariableTarget]::User)
|
|
if (-Not ($currentPath -split ';' | ForEach-Object { $_.Trim() } | Where-Object { $_ -ieq $otoPath })) {
|
|
[System.Environment]::SetEnvironmentVariable('Path', "$currentPath;$otoPath", [System.EnvironmentVariableTarget]::User)
|
|
Write-Host "oto.exe has been added to the PATH."
|
|
} else {
|
|
Write-Host "oto.exe is already in the PATH."
|
|
}
|
|
} else {
|
|
Write-Host "Error: oto.exe not found in $packageArgs.unzipLocation."
|
|
}
|
|
|
|
# Step 3: Execute startup script if it exists
|
|
$startupScriptPath = Join-Path $env:LOCALAPPDATA "com.toki-labs.oto/startup/com.toki-labs.oto.ps1"
|
|
# $otoExePath = Join-Path $env:LOCALAPPDATA "com.toki-labs.oto/oto.exe"
|
|
if (Test-Path $startupScriptPath) {
|
|
Write-Host "Found startup script at $startupScriptPath. Attempting to run as non-admin user..."
|
|
|
|
# 현재 시간 기준으로 1분 뒤의 시간 계산
|
|
$currentTime = Get-Date
|
|
$futureTime = $currentTime.AddMinutes(1).ToString("HH:mm")
|
|
|
|
# schtasks 명령어로 작업 생성 및 실행
|
|
$taskName = "RunStartupScript_" + [guid]::NewGuid().ToString()
|
|
schtasks /Create /F /RU "$env:USERNAME" /SC ONCE /ST $futureTime /TN $taskName /TR "powershell.exe -NoProfile -ExecutionPolicy Bypass -File `"$startupScriptPath`""
|
|
schtasks /Run /TN $taskName
|
|
schtasks /Delete /F /TN $taskName
|
|
} else {
|
|
Write-Host "Startup script not found at $startupScriptPath. Skipping execution."
|
|
}
|
|
|
|
Write-Host "Installation completed successfully!"
|