118 lines
4.0 KiB
PowerShell
118 lines
4.0 KiB
PowerShell
param (
|
|
[string]$ConfigurationName,
|
|
[string]$TargetPath,
|
|
[string]$TargetName,
|
|
[string]$TargetDir
|
|
)
|
|
|
|
# Define the base directory
|
|
$baseDir = "F:\SPT-AKI-DEV\BepInEx\plugins"
|
|
|
|
# Function to log messages to the console
|
|
function Log {
|
|
param (
|
|
[string]$message
|
|
)
|
|
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
|
|
Write-Host "$timestamp - $message"
|
|
}
|
|
|
|
Log "Script started"
|
|
Log "ConfigurationName: $ConfigurationName"
|
|
Log "TargetPath: $TargetPath"
|
|
Log "TargetName: $TargetName"
|
|
Log "TargetDir: $TargetDir"
|
|
|
|
# Get the assembly version
|
|
$assembly = [System.Reflection.Assembly]::LoadFile($TargetPath)
|
|
$version = $assembly.GetName().Version.ToString()
|
|
Log "Assembly version: $version"
|
|
|
|
# Determine the directory of the deployed DLL
|
|
$deployDir = Split-Path -Parent $TargetPath
|
|
Log "DeployDir: $deployDir"
|
|
|
|
# Check if the deploy directory is the base directory or one level further
|
|
if ($deployDir -ne $baseDir) {
|
|
$relativePath = $deployDir.Substring($baseDir.Length + 1) # Get the relative path beyond the base directory
|
|
Log "RelativePath: $relativePath"
|
|
if (($relativePath -split '\\').Count -eq 1) { # Check if it's exactly one directory level further
|
|
$directoryName = (Get-Item $deployDir).Name
|
|
$zipPath = "F:\SPT-AKI-DEV\BepInEx\plugins\$directoryName-v$version.zip"
|
|
Log "DirectoryName: $directoryName"
|
|
Log "ZipPath: $zipPath"
|
|
|
|
# Remove existing zip file if it exists
|
|
if (Test-Path $zipPath) {
|
|
Log "ZipPath exists, removing"
|
|
Remove-Item $zipPath -Force
|
|
}
|
|
|
|
# Create the temp directory structure
|
|
$tempZipDir = "F:\SPT-AKI-DEV\tempZip"
|
|
if (Test-Path $tempZipDir) {
|
|
Log "TempZipDir exists, removing"
|
|
Remove-Item $tempZipDir -Recurse -Force
|
|
}
|
|
New-Item -ItemType Directory -Path $tempZipDir
|
|
Log "TempZipDir created: $tempZipDir"
|
|
|
|
$newZipStructure = Join-Path $tempZipDir "Bepinex\plugins\$directoryName"
|
|
New-Item -ItemType Directory -Path $newZipStructure -Force
|
|
Log "New zip structure directory created: $newZipStructure"
|
|
|
|
# Copy files to the new zip structure
|
|
Copy-Item -Path "$TargetDir\*" -Destination $newZipStructure -Recurse -Force
|
|
Log "Files copied to new zip structure"
|
|
|
|
# Create the final zip file
|
|
Add-Type -AssemblyName System.IO.Compression.FileSystem
|
|
[System.IO.Compression.ZipFile]::CreateFromDirectory($tempZipDir, $zipPath)
|
|
Log "Final zip file created: $zipPath"
|
|
|
|
# Clean up temp directory
|
|
Remove-Item $tempZipDir -Recurse -Force
|
|
Log "TempZipDir removed"
|
|
} else {
|
|
Log "RelativePath is not one directory level further"
|
|
}
|
|
} else {
|
|
$zipPath = "F:\SPT-AKI-DEV\BepInEx\plugins\$TargetName-v$version.zip"
|
|
Log "ZipPath: $zipPath"
|
|
|
|
# Remove existing zip file if it exists
|
|
if (Test-Path $zipPath) {
|
|
Log "ZipPath exists, removing"
|
|
Remove-Item $zipPath -Force
|
|
}
|
|
|
|
# Create the temp directory structure
|
|
$tempZipDir = "F:\SPT-AKI-DEV\tempZip"
|
|
if (Test-Path $tempZipDir) {
|
|
Log "TempZipDir exists, removing"
|
|
Remove-Item $tempZipDir -Recurse -Force
|
|
}
|
|
New-Item -ItemType Directory -Path $tempZipDir
|
|
Log "TempZipDir created: $tempZipDir"
|
|
|
|
# Create the required folder structure within the temp directory
|
|
$bepinexPluginsDir = Join-Path $tempZipDir "Bepinex\plugins"
|
|
New-Item -ItemType Directory -Path $bepinexPluginsDir -Force
|
|
Log "Bepinex\plugins directory created: $bepinexPluginsDir"
|
|
|
|
# Copy the single DLL to the new structure
|
|
Copy-Item -Path $TargetPath -Destination $bepinexPluginsDir -Force
|
|
Log "DLL copied to Bepinex\plugins directory"
|
|
|
|
# Create the final zip file
|
|
Add-Type -AssemblyName System.IO.Compression.FileSystem
|
|
[System.IO.Compression.ZipFile]::CreateFromDirectory($tempZipDir, $zipPath)
|
|
Log "Final zip file created: $zipPath"
|
|
|
|
# Clean up temp directory
|
|
Remove-Item $tempZipDir -Recurse -Force
|
|
Log "TempZipDir removed"
|
|
}
|
|
|
|
Log "Script finished"
|