Add Advanced Installer configuration and automation script
This commit is contained in:
80
build_setup.ps1
Normal file
80
build_setup.ps1
Normal file
@@ -0,0 +1,80 @@
|
||||
# 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
|
||||
}
|
||||
Reference in New Issue
Block a user