diff --git a/.ci/ci.yaml b/.ci/ci.yaml
index 5348c55cc9..26efee03ae 100644
--- a/.ci/ci.yaml
+++ b/.ci/ci.yaml
@@ -59,25 +59,6 @@ jobs:
steps:
- template: macos-steps.yaml
-# - job: WindowsVS15
-# timeoutInMinutes: 360
-# displayName: Windows VS15
-# pool:
-# vmImage: vs2017-win2016
-# strategy:
-# matrix:
-# Plain:
-# CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF'
-# python.version: '2.7'
-# CMakeGenerator: '-G "Visual Studio 15 2017 Win64"'
-# MSBuildVersion: '15.0'
-# ArchiveNoLibs: 'mlpack-windows-vs15-no-libs.zip'
-# ArchiveLibs: 'mlpack-windows-vs15.zip'
-# ArchiveTests: 'mlpack_test-vs15.xml'
-
-# steps:
-# - template: windows-steps.yaml
-
- job: WindowsVS16
timeoutInMinutes: 360
displayName: Windows VS16
diff --git a/.ci/windows-steps.yaml b/.ci/windows-steps.yaml
index 4281ab23f8..e2a9ed38e0 100644
--- a/.ci/windows-steps.yaml
+++ b/.ci/windows-steps.yaml
@@ -116,6 +116,56 @@ steps:
replaceExistingArchive: true
displayName: 'Build artifacts'
+# Build MSI installer.
+- powershell: |
+ # Pull the documentation for the installer.
+ try {
+ $url = "http://ci.mlpack.org/job/mlpack%20-%20doxygen%20build/lastSuccessfulBuild/artifact/build/doc/html/*zip*/html.zip"
+ (new-object net.webclient).DownloadFile($url, 'dist\win-installer\jenkinsdoc.zip')
+ }
+ catch {
+ Write-Output "Unable to download precompiled Doxygen documentation from Jenkins!"
+ }
+ try {
+ (Add-Type -AssemblyName System.IO.Compression.FileSystem);
+ [System.IO.Compression.ZipFile]::ExtractToDirectory('dist\win-installer\jenkinsdoc.zip', 'dist\win-installer\mlpack-win-installer\Sources\doc')
+ }
+ catch{Write-Output "Unable to add doc to installer, skipping!"}
+ # Preparing installer staging.
+ mkdir dist\win-installer\mlpack-win-installer\Sources\lib
+ cp build\Release\*.lib dist\win-installer\mlpack-win-installer\Sources\lib\
+ cp build\Release\*.exp dist\win-installer\mlpack-win-installer\Sources\lib\
+ cp build\Release\*.dll dist\win-installer\mlpack-win-installer\Sources\
+ cp build\Release\*.exe dist\win-installer\mlpack-win-installer\Sources\
+ cp $(Agent.ToolsDirectory)\OpenBLAS.0.2.14.1\lib\native\bin\x64\*.dll dist\win-installer\mlpack-win-installer\Sources\
+ cp build\include\mlpack dist\win-installer\mlpack-win-installer\Sources -recurse
+ cp doc\examples dist\win-installer\mlpack-win-installer\Sources -recurse
+ cp src\mlpack\tests\data\german.csv dist\win-installer\mlpack-win-installer\Sources\examples\sample-ml-app\sample-ml-app\data\
+ # Check current git version or mlpack version.
+ $ver = (Get-Content "src\mlpack\core\util\version.hpp" | where {$_ -like "*MLPACK_VERSION*"});
+ $env:MLPACK_VERSION += $ver[0].substring($ver[0].length - 1, 1) + '.';
+ $env:MLPACK_VERSION += $ver[1].substring($ver[1].length - 1, 1) + '.';
+ $env:MLPACK_VERSION += $ver[2].substring($ver[2].length - 1, 1);
+
+ if (Test-Path "src/mlpack/core/util/gitversion.hpp")
+ {
+ $ver = (Get-Content "src/mlpack/core/util/gitversion.hpp");
+ $env:INSTALL_VERSION = $ver.Split('"')[1].Split(' ')[1];
+ }
+ else
+ {
+ $env:INSTALL_VERSION = $env:MLPACK_VERSION;
+ }
+
+ # Build the MSI installer.
+ cd dist\win-installer\mlpack-win-installer
+ & 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe' `
+ -t:rebuild `
+ -p:Configuration=Release `
+ -p:TreatWarningsAsErrors=True `
+ mlpack-win-installer.wixproj
+ displayName: 'Build MSI Windows installer'
+
# Publish artifacts to Azure Pipelines
- task: PublishBuildArtifacts@1
inputs:
@@ -132,6 +182,11 @@ steps:
pathtoPublish: 'build/Testing/'
artifactName: 'Tests'
displayName: 'Publish artifacts test results'
+- task: PublishBuildArtifacts@1
+ inputs:
+ pathtoPublish: 'dist\win-installer\mlpack-win-installer\bin\Release\mlpack-windows.msi'
+ artifactName: mlpack-windows-installer
+ displayName: 'Publish Windows MSI installer'
# Publish test results to Azure Pipelines
- task: PublishTestResults@2
diff --git a/dist/win-installer/mlpack-win-installer/Product.wxs b/dist/win-installer/mlpack-win-installer/Product.wxs
index 4adafc2a23..3cd7598a85 100644
--- a/dist/win-installer/mlpack-win-installer/Product.wxs
+++ b/dist/win-installer/mlpack-win-installer/Product.wxs
@@ -2,47 +2,38 @@
-
-
-
+
+
-
-
-
+
+
-
-
-
- $(env.MLPACK_VERSION)
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ $(env.MLPACK_VERSION)
+
+
+
+
+
+
diff --git a/dist/win-installer/mlpack-win-installer/mlpack-win-installer.wixproj b/dist/win-installer/mlpack-win-installer/mlpack-win-installer.wixproj
index 8795a920eb..0e89ee825c 100644
--- a/dist/win-installer/mlpack-win-installer/mlpack-win-installer.wixproj
+++ b/dist/win-installer/mlpack-win-installer/mlpack-win-installer.wixproj
@@ -9,33 +9,36 @@
mlpack-windows
Package
mlpack-win-installer
+ false
+ SourceDir=.\Sources
+ $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets
bin\$(Configuration)\
obj\$(Configuration)\
- Debug
+ Debug;$(DefineConstants)
bin\$(Configuration)\
obj\$(Configuration)\
- Debug
bin\$(Platform)\$(Configuration)\
obj\$(Platform)\$(Configuration)\
+ Debug;$(DefineConstants)
bin\$(Platform)\$(Configuration)\
obj\$(Platform)\$(Configuration)\
-
- HarvestPath=..\staging
-
-
-
-
+
+ Sources
+ Sources
+ var.SourceDir
+ true
+
$(WixExtDir)\WixUIExtension.dll
WixUIExtension
@@ -46,14 +49,4 @@
-
-
-
-
-
-
\ No newline at end of file
+