Files
hMarkdown/build_setup.ps1

81 lines
2.8 KiB
PowerShell

# build_setup.ps1
# Script to automate creation and building of hMarkdown Installer using Advanced Installer 22.5
$aiPath = "C:\Program Files (x86)\Caphyon\Advanced Installer 22.5\bin\x86\AdvancedInstaller.com"
if (-not (Test-Path $aiPath)) {
Write-Error "Advanced Installer not found at $aiPath"
exit 1
}
$projectDir = "E:\ai\C#\hMarkdown"
$aipPath = Join-Path $projectDir "hMarkdown.aip"
$releaseBin = Join-Path $projectDir "hMarkdown\bin\Release\net48"
$exePath = Join-Path $releaseBin "hMarkdown.exe"
# 1. Build the project in Release mode if not built
Write-Host "Building project in Release mode..."
dotnet build -c Release
if ($LASTEXITCODE -ne 0) {
Write-Error "Failed to build hMarkdown project."
exit 1
}
# 2. Get product version from executable version
$version = (Get-Item $exePath).VersionInfo.ProductVersion
if ($null -eq $version -or $version -eq "") {
$version = "1.0.1"
}
# Trim version to standard MSI format (major.minor.build, max 3 parts for Windows Installer product version)
if ($version -match "^\d+\.\d+\.\d+") {
$version = $Matches[0]
}
Write-Host "Product Version detected: $version"
# 3. Create a new Advanced Installer Project
Write-Host "Creating new Advanced Installer project..."
if (Test-Path $aipPath) {
Remove-Item $aipPath
}
& $aiPath /newproject $aipPath -type professional -lang tr
if ($LASTEXITCODE -ne 0) {
Write-Error "Failed to create new Advanced Installer project."
exit 1
}
# 4. Generate .aic command file
$aicPath = Join-Path $projectDir "setup_commands.aic"
$aicContent = @(
";aic",
"SetVersion $version",
"SetProperty ProductName=""hMarkdown""",
"SetProperty Manufacturer=""hOLOlu""",
"AddFile APPDIR `"$exePath`"",
"AddFile APPDIR `"$exePath.config`"",
"AddFile APPDIR `"$exePath.manifest`"",
"AddFolder APPDIR\icons `"$releaseBin\icons`"",
"NewShortcut -name `"hMarkdown`" -dir ProgramMenuFolder -target APPDIR\hMarkdown.exe -icon `"$projectDir\hMarkdown.ico`"",
"NewShortcut -name `"hMarkdown`" -dir DesktopFolder -target APPDIR\hMarkdown.exe -icon `"$projectDir\hMarkdown.ico`"",
"AddFileAssociation `"hOLOlu.hMarkdown.md`" -desc `"Markdown Document`" -ext md -cmd APPDIR\hMarkdown.exe",
"Save",
"Build"
)
# Write command file with ANSI encoding (Windows-1254/UTF-8 signature sometimes confuses command line parsers)
$aicContent | Out-File -FilePath $aicPath -Encoding ascii
# 5. Execute the commands and build
Write-Host "Executing installer setup commands and building..."
& $aiPath /execute $aipPath $aicPath
if ($LASTEXITCODE -eq 0) {
Write-Host "Installer built successfully!"
Write-Host "You can find your setup files in the 'hMarkdown-SetupFiles' folder."
} else {
Write-Error "Failed to build installer."
}
# Cleanup temporary command file
if (Test-Path $aicPath) {
Remove-Item $aicPath
}