Update for SPT 3.9.0
This commit is contained in:
117
PackageMods.ps1
Normal file
117
PackageMods.ps1
Normal file
@@ -0,0 +1,117 @@
|
||||
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"
|
||||
Reference in New Issue
Block a user