This is a guide for building MiNiFi C++ binaries for Windows. Follow it to create the artifacts and document the process as described in the documentation section. When packaging, the resulting MSI cannot be redistributed under the Apache License 2.0, because it includes Microsoft redistributable DLLs.
Required environment
Operating System: Microsoft Windows 10 x64 or later
Recommended hardware: at least 4 CPU cores and 16 GiB RAM
Required software
- Microsoft Visual Studio 2022 Community or Enterprise
- Install with the "Desktop development with C++" workload, it should include all needed components
- CMake >=3.24 (https://cmake.org/download/)
- Choose the "Add CMake to the system path..." option when installing
- git (https://git-scm.com/download/win)
- WiX Toolset >= 3.11 (https://wixtoolset.org/releases/)
- WiX Toolset requires .NET 3.5 to install, which you can install via the "Turn Windows features on or off" utility
- Perl (Strawberry Perl http://strawberryperl.com/)
- If Strawberry Perl is used the
${StrawberryPerlRoot}\c\bin
directory should not be part of the PATH variable, or make sure to find git's patch executable before that, as Strawberry Perl's patch.exe will be found as the patch executable in the configure phase instead of the git patch executable. When installed via scoop, this is not a problem, because only perl binaries are added to the PATH. - An alternative is ActiveState Perl, https://www.activestate.com/ActivePerl for which you may need to explicitly build the Perl module Win32/Console.pm via https://platform.activestate.com/ActiveState and then download it)
- If Strawberry Perl is used the
- NASM (https://www.nasm.us)
- Make sure to add NASM to the system PATH variable
Build process
To build the 64-bit msi execute the following steps:
- Create the
C:\Development
directory - Open
x64 Native Tools Command Prompt for VS 2022
- Execute the following commands
cd C:\Development git clone https://github.com/apache/nifi-minifi-cpp.git cd nifi-minifi-cpp git checkout <tag> win_build_vs.bat build64 /T /P
- The artifact will be at
C:\Development\nifi-minifi-cpp\build64\nifi-minifi-cpp.msi
(Optional) If you want to build the 32-bit msi as well, execute the following steps (after completing the 64-bit build):
- Open
x86 Native Tools Command Prompt for VS 2022
- Execute the following commands
cd C:\Development\nifi-minifi-cpp win_build_vs.bat build32 /T /P
- The artifact will be at
C:\Development\nifi-minifi-cpp\build32\nifi-minifi-cpp.msi
Documentation
To document how a particulate release can be built, substitute the example values:
Information | How to obtain | Value |
---|---|---|
git tag of the used source | Knowing this is a precondition for starting the build | main |
OS version | Open "About your PC" and use Edition, Version and OS build under the Windows specifications section | Windows 10 Pro 2004 19041.1052 |
MSVC version | Run cl from x64 Native Tools Command Prompt for VS 2022 and extract the version | 19.37.32825 |
VC Redistributable Merge Module Version | Run set VCToolsRedistDir from x64 Native Tools Command Prompt for VS 2022 and extract the version | 14.36.32532 |
CMake version | Run cmake --version and extract the version | 3.24 |
git version | Run git --version and extract the version | 2.30.0.windows.2 |
WiX Toolset version | Run the WiX application which displays the version | v3.11.2.4516 |