66 lines
2.7 KiB
PowerShell
66 lines
2.7 KiB
PowerShell
# Run this script as administrator
|
|
if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
|
|
Write-Host "Please run this script as Administrator" -ForegroundColor Red
|
|
exit 1
|
|
}
|
|
|
|
# Get the directory where the script is located
|
|
$scriptPath = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
$journalerPath = Join-Path $scriptPath "src-tauri\target\release\journaler.exe"
|
|
$workingDir = Split-Path -Parent $journalerPath
|
|
|
|
# Verify journaler.exe exists
|
|
if (-not (Test-Path $journalerPath)) {
|
|
Write-Host "Error: journaler.exe not found at: $journalerPath" -ForegroundColor Red
|
|
Write-Host "Please make sure you've built the release version of journaler" -ForegroundColor Yellow
|
|
exit 1
|
|
}
|
|
|
|
# Task settings
|
|
$taskName = "RunJournalerPeriodically"
|
|
$taskDescription = "Runs Journaler every 10 minutes"
|
|
|
|
try {
|
|
# Remove existing task if it exists
|
|
Unregister-ScheduledTask -TaskName $taskName -Confirm:$false -ErrorAction SilentlyContinue
|
|
|
|
# Create the task action (with working directory)
|
|
$action = New-ScheduledTaskAction -Execute $journalerPath -WorkingDirectory $workingDir
|
|
|
|
# Create trigger (every 10 minutes)
|
|
$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Minutes 10)
|
|
|
|
# Get current user for the task
|
|
$currentUser = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
|
|
|
|
# Set principal (run as current user when logged in)
|
|
$principal = New-ScheduledTaskPrincipal -UserId $currentUser -LogonType Interactive -RunLevel Highest
|
|
|
|
# Set settings (more permissive)
|
|
$settings = New-ScheduledTaskSettingsSet `
|
|
-AllowStartIfOnBatteries `
|
|
-DontStopIfGoingOnBatteries `
|
|
-ExecutionTimeLimit (New-TimeSpan -Minutes 0) `
|
|
-RestartCount 3 `
|
|
-RestartInterval (New-TimeSpan -Minutes 1)
|
|
|
|
# Register the task
|
|
Register-ScheduledTask -TaskName $taskName -Description $taskDescription `
|
|
-Action $action -Trigger $trigger -Principal $principal -Settings $settings
|
|
|
|
Write-Host "Successfully created scheduled task: $taskName" -ForegroundColor Green
|
|
Write-Host "Journaler will run every 10 minutes" -ForegroundColor Green
|
|
Write-Host "Task will run as user: $currentUser" -ForegroundColor Green
|
|
|
|
# Start the task immediately
|
|
Start-ScheduledTask -TaskName $taskName
|
|
Write-Host "Task started manually" -ForegroundColor Green
|
|
|
|
# Show task status
|
|
$task = Get-ScheduledTask -TaskName $taskName
|
|
Write-Host "Current task state: $($task.State)" -ForegroundColor Cyan
|
|
|
|
} catch {
|
|
Write-Host "Error creating scheduled task: $_" -ForegroundColor Red
|
|
exit 1
|
|
} |