fix: improve OpenXML installation with proper path handling and error checking

This commit is contained in:
Bobby Abellana (aider) 2025-02-21 10:42:19 -08:00
parent 276c1a615d
commit 01a86be2a1

View File

@ -7,6 +7,13 @@ Installs prerequisites for SharePoint XLS Converter application
# Enable TLS 1.2 for secure connections
[Net.ServicePointManager]::SecurityProtocol = [enum]::Parse([Net.SecurityProtocolType], "Tls12")
# Verify .NET Framework 4.6+ is installed
if (-not (Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\' | Get-ItemPropertyValue -Name Release | ForEach-Object { $_ -ge 394802 })) {
Write-Host "ERROR: Requires .NET Framework 4.6.2 or newer!" -ForegroundColor Red
Write-Host "Download from: https://dotnet.microsoft.com/download/dotnet-framework" -ForegroundColor Yellow
exit 1
}
Write-Host "Installing required modules..." -ForegroundColor Cyan
# Install Microsoft.Graph modules
@ -40,15 +47,16 @@ try {
}
# Install OpenXML SDK package
$openXmlPackage = Install-Package DocumentFormat.OpenXml -Source https://www.nuget.org/api/v2/ -Force -SkipDependencies
$dllPath = Join-Path $openXmlPackage.PackageSource "lib\net46\DocumentFormat.OpenXml.dll"
if (Test-Path $dllPath) {
$openXmlPackage = Install-Package DocumentFormat.OpenXml -ProviderName NuGet -Force -SkipDependencies
$packagePath = Join-Path $env:USERPROFILE ".nuget\packages\DocumentFormat.OpenXml"
$dllPath = Resolve-Path (Join-Path $packagePath "*\lib\net*\DocumentFormat.OpenXml.dll") -ErrorAction SilentlyContinue | Select-Object -First 1
if ($dllPath -and (Test-Path $dllPath)) {
Add-Type -Path $dllPath
Write-Host "DocumentFormat.OpenXml assembly loaded successfully" -ForegroundColor Green
}
else {
throw "OpenXML DLL not found at $dllPath"
throw "OpenXML DLL not found in NuGet packages. Tried path: $packagePath"
}
}
catch {