#Requires -RunAsAdministrator <# .SYNOPSIS Installs prerequisites for SharePoint XLS Converter application #> # Enable TLS 1.2 for secure connections [Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointProtocolType]::Tls12 Write-Host "Installing required modules..." -ForegroundColor Cyan # Install Microsoft.Graph modules $graphModules = @( "Microsoft.Graph.Sites", "Microsoft.Graph.Files", "Microsoft.Graph.Authentication" ) foreach ($module in $graphModules) { if (-not (Get-Module -ListAvailable -Name $module)) { try { Install-Module $module -Scope CurrentUser -Force -AllowClobber Write-Host "$module module installed successfully" -ForegroundColor Green } catch { Write-Host "Failed to install $module: $($_.Exception.Message)" -ForegroundColor Red exit 1 } } else { Write-Host "$module module is already installed" -ForegroundColor Yellow } } # Install DocumentFormat.OpenXml module if (-not (Get-Module -ListAvailable -Name DocumentFormat.OpenXml)) { try { # Install NuGet package provider if not exists if (-not (Get-PackageProvider -Name NuGet)) { Install-PackageProvider -Name NuGet -Force } Install-Module DocumentFormat.OpenXml -Scope CurrentUser -Force -AllowClobber Write-Host "DocumentFormat.OpenXml module installed successfully" -ForegroundColor Green } catch { Write-Host "Failed to install DocumentFormat.OpenXml module: $($_.Exception.Message)" -ForegroundColor Red Write-Host "You may need to install the Open XML SDK manually." -ForegroundColor Yellow # Do not exit, as the application might still work if the assembly is in the GAC or a known path } } else { Write-Host "DocumentFormat.OpenXml module is already installed" -ForegroundColor Yellow } # Check for Excel installation try { $excelCheck = New-Object -ComObject Excel.Application -ErrorAction Stop $excelCheck.Quit() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excelCheck) | Out-Null Write-Host "Microsoft Excel is installed" -ForegroundColor Green } catch { Write-Host @" Microsoft Excel not found! The conversion feature requires: 1. Microsoft Excel 2013 or newer 2. PowerShell must run in STA mode Run the main script like this: powershell.exe -STA -File .\MainForm.ps1 "@ -ForegroundColor Red exit 1 } Write-Host @" Installation complete! Run the main application with: powershell.exe -STA -File .\MainForm.ps1 Note: First run might take longer while modules load "@ -ForegroundColor Green