diff --git a/.github/workflows/build_cbsinit.yml b/.github/workflows/build_cbsinit.yml
new file mode 100644
index 00000000..24b7e228
--- /dev/null
+++ b/.github/workflows/build_cbsinit.yml
@@ -0,0 +1,36 @@
+name: Cloudbase-Init build MSI retest
+
+on: [push, pull_request]
+
+jobs:
+ build:
+
+ runs-on: windows-2025
+ strategy:
+ max-parallel: 100
+ matrix:
+ cbsinit_repo: ['https://github.com/cloudbase/cloudbase-init']
+ cbsinit_branch: ['master']
+ python_version: ['3.13_10']
+ platform: ['x64']
+
+ steps:
+ - uses: actions/checkout@v4
+ - name: Add msbuild to PATH
+ uses: microsoft/setup-msbuild@v2
+ - name: Build msi
+ shell: cmd
+ run:
+ powershell.exe .\BuildAutomation\BuildCloudbaseInitSetup.ps1 ^
+ -ClonePullInstallerRepo:$false ^
+ -PythonVersion ${{ matrix.python_version }} ^
+ -Platform ${{ matrix.platform }} ^
+ -VCVars "2022" ^
+ -RelativePythonDirPath:$true ^
+ -VSRedistDir "''" ^
+ -CloudbaseInitRepoUrl ${{ matrix.cbsinit_repo }} ^
+ -CloudbaseInitRepoBranch ${{ matrix.cbsinit_branch }}
+ - uses: actions/upload-artifact@v4
+ with:
+ name: "CloudbaseInit_${{ matrix.platform }}_MSI_${{ matrix.cbsinit_branch }}"
+ path: 'CloudbaseInitSetup/bin/release/${{ matrix.platform }}/CloudbaseInitSetup.msi'
diff --git a/BuildAutomation/BuildCloudbaseInitSetup.ps1 b/BuildAutomation/BuildCloudbaseInitSetup.ps1
index 68f7669a..6845f90a 100644
--- a/BuildAutomation/BuildCloudbaseInitSetup.ps1
+++ b/BuildAutomation/BuildCloudbaseInitSetup.ps1
@@ -10,12 +10,16 @@ Param(
[switch]$ClonePullInstallerRepo = $true,
[string]$InstallerDir = $null,
[string]$VSRedistDir = "${ENV:ProgramFiles(x86)}\Common Files\Merge Modules",
- [string]$SignTimestampUrl = "http://timestamp.digicert.com?alg=sha256"
+ [string]$SignTimestampUrl = "http://timestamp.digicert.com?alg=sha256",
+ [string]$VCVars="2019",
+ [switch]$RelativePythonDirPath
)
$ErrorActionPreference = "Stop"
$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
+$repoRootPath = split-path -parent $scriptPath
+
. "$scriptPath\BuildUtils.ps1"
$platformVCVarsRequired = "x86_amd64"
@@ -25,18 +29,23 @@ if ($platform -eq "x86") {
$platformVCVarsRequired = "x86"
}
-SetVCVars "2019" $platformVCVarsRequired
+SetVCVars $VCVars $platformVCVarsRequired
# Needed for SSH
$ENV:HOME = $ENV:USERPROFILE
$python_dir = "C:\Python_CloudbaseInit"
+$basepath = "C:\build\cloudbase-init"
+
+if ($RelativePythonDirPath) {
+ $python_dir = Join-Path $repoRootPath "CloudbaseInitSetup\Python_CloudbaseInit"
+ $basepath = Join-path $scriptPath "build\cloudbase-init"
+}
$ENV:PATH = "$python_dir\;$python_dir\scripts;$ENV:PATH"
$ENV:PATH += ";$ENV:ProgramFiles (x86)\Git\bin\"
$ENV:PATH += ";$ENV:ProgramFiles\7-zip\"
-$basepath = "C:\build\cloudbase-init"
CheckDir $basepath
pushd .
@@ -164,13 +173,17 @@ try
$installer_sources_dir = join-path $cloudbaseInitInstallerDir "CloudbaseInitSetup"
- if($platform -eq "x64")
- {
- copy "${VSRedistDir}\Microsoft_VC140_CRT_x64.msm" $installer_sources_dir
- }
- else
+
+ if ($VSRedistDir)
{
- copy "${VSRedistDir}\Microsoft_VC140_CRT_x86.msm" $installer_sources_dir
+ if($platform -eq "x64")
+ {
+ copy "${VSRedistDir}\Microsoft_VC140_CRT_x64.msm" $installer_sources_dir
+ }
+ else
+ {
+ copy "${VSRedistDir}\Microsoft_VC140_CRT_x86.msm" $installer_sources_dir
+ }
}
cd $cloudbaseInitInstallerDir
diff --git a/CloudbaseInitSetup.sln b/CloudbaseInitSetup.sln
index c0ff91e9..258de71d 100644
--- a/CloudbaseInitSetup.sln
+++ b/CloudbaseInitSetup.sln
@@ -4,9 +4,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00
VisualStudioVersion = 12.0.30501.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "CloudbaseInitSetup", "CloudbaseInitSetup\CloudbaseInitSetup.wixproj", "{72504EA8-DE95-42DA-91EA-4359BA85699E}"
- ProjectSection(ProjectDependencies) = postProject
- {03E4CD9D-2149-424A-9092-9162DE22F105} = {03E4CD9D-2149-424A-9092-9162DE22F105}
- EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "BuildAutomation", "BuildAutomation", "{2F8164AD-5423-46D8-BC71-554873129841}"
ProjectSection(SolutionItems) = preProject
@@ -32,16 +29,6 @@ Global
{72504EA8-DE95-42DA-91EA-4359BA85699E}.Release|x64.Build.0 = Release|x64
{72504EA8-DE95-42DA-91EA-4359BA85699E}.Release|x86.ActiveCfg = Release|x86
{72504EA8-DE95-42DA-91EA-4359BA85699E}.Release|x86.Build.0 = Release|x86
- {03E4CD9D-2149-424A-9092-9162DE22F105}.Debug|x64.ActiveCfg = Debug|x64
- {03E4CD9D-2149-424A-9092-9162DE22F105}.Debug|x64.Build.0 = Debug|x64
- {03E4CD9D-2149-424A-9092-9162DE22F105}.Debug|x86.ActiveCfg = Debug|Win32
- {03E4CD9D-2149-424A-9092-9162DE22F105}.Debug|x86.Build.0 = Debug|Win32
- {03E4CD9D-2149-424A-9092-9162DE22F105}.Debug|x86.Deploy.0 = Debug|Win32
- {03E4CD9D-2149-424A-9092-9162DE22F105}.Release|x64.ActiveCfg = Release|x64
- {03E4CD9D-2149-424A-9092-9162DE22F105}.Release|x64.Build.0 = Release|x64
- {03E4CD9D-2149-424A-9092-9162DE22F105}.Release|x86.ActiveCfg = Release|Win32
- {03E4CD9D-2149-424A-9092-9162DE22F105}.Release|x86.Build.0 = Release|Win32
- {03E4CD9D-2149-424A-9092-9162DE22F105}.Release|x86.Deploy.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/CloudbaseInitSetup/Binaries/x64/UtilsActions.dll b/CloudbaseInitSetup/Binaries/x64/UtilsActions.dll
new file mode 100644
index 00000000..952ecd85
Binary files /dev/null and b/CloudbaseInitSetup/Binaries/x64/UtilsActions.dll differ
diff --git a/CloudbaseInitSetup/Binaries/x86/UtilsActions.dll b/CloudbaseInitSetup/Binaries/x86/UtilsActions.dll
new file mode 100644
index 00000000..f3128fd7
Binary files /dev/null and b/CloudbaseInitSetup/Binaries/x86/UtilsActions.dll differ
diff --git a/CloudbaseInitSetup/CloudbaseInitSetup.wixproj b/CloudbaseInitSetup/CloudbaseInitSetup.wixproj
index 2fb2adab..23f4940b 100644
--- a/CloudbaseInitSetup/CloudbaseInitSetup.wixproj
+++ b/CloudbaseInitSetup/CloudbaseInitSetup.wixproj
@@ -19,7 +19,7 @@
bin\$(Configuration)\$(platform)\
obj\$(Configuration)\
- PythonSourcePath=C:\Python_CloudbaseInit;CarbonSourcePath=Carbon;Version=1.0.0.0;VersionStr=1.0.0.0
+ PythonSourcePath=Python_CloudbaseInit;CarbonSourcePath=Carbon;Version=1.0.0.0;VersionStr=1.0.0.0
Debug
@@ -27,7 +27,7 @@
obj\$(Platform)\$(Configuration)\
- PythonSourcePath=C:\Python_CloudbaseInit;CarbonSourcePath=Carbon;Version=1.0.0.0;VersionStr=1.0.0.0
+ PythonSourcePath=Python_CloudbaseInit;CarbonSourcePath=Carbon;Version=1.0.0.0;VersionStr=1.0.0.0
bin\$(Configuration)\$(platform)\
obj\$(Platform)\$(Configuration)\
@@ -309,10 +309,9 @@
-
+
-
-
+
-
\ No newline at end of file
+
diff --git a/CloudbaseInitSetup/Microsoft_VC140_CRT_x64.msm b/CloudbaseInitSetup/Microsoft_VC140_CRT_x64.msm
new file mode 100644
index 00000000..c85f03ab
Binary files /dev/null and b/CloudbaseInitSetup/Microsoft_VC140_CRT_x64.msm differ
diff --git a/CloudbaseInitSetup/Microsoft_VC140_CRT_x86.msm b/CloudbaseInitSetup/Microsoft_VC140_CRT_x86.msm
new file mode 100644
index 00000000..6bb26a31
Binary files /dev/null and b/CloudbaseInitSetup/Microsoft_VC140_CRT_x86.msm differ