81 lines
2.8 KiB
PowerShell
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
|
|
}
|