At the moment, there are two kinds of Windows builds: The “portable“ distribution, which is simply a ZIP archive, and the EXE installer, which is based on the Nullsoft Installer. Neither of the two is particularly well-suited for automatic deployment. Fur such scenarios, it would be desirable to have a Windows Installer (MSI) package.
I have some experience with the WiX toolset and would be willing to invest some time into this issue. In the past, I have created a MSI package of KeePassX, which should be a good starting point for making a MSI package for KeePassXC. So far, this MSI-package is based on the portable ZIP distribution, but building the MSI involves several manual steps.
Unfortunately, I do not understand yet how the build system for KeePassXC works. In particular, I did not find the code that is currently responsible for building the Windows packages. If you could give me some pointers, I would have a look into how WiX can be integrated into that workflow.
The zip and exe are "built" using cpack which is part of cmake. It looks like there is a WiX plugin for cpack you could use: https://cmake.org/cmake/help/v3.10/module/CPackWIX.html
Any installer build that requires manual steps is a non starter.
Thanks for pointing me in the right direction. I already thought that you are using CPack, but I did not see the configuration because I initially looked in the wrong CMakeLists.txt (in the root instead of in the src directory).
It took me some time to get the build environment on Windows working, but now I can build the ZIP and the NSIS package and I will try to add the configuration for WiX.
This feature got implemented with PR #1153, but building the MSI packages as part of the release process was disabled by PR #1491.
@phoerious As you made this change (remove WiX from the list in release-tool): Could you maybe elaborate on why this change was necessary and what would be the best way for making sure that MSI packages are built as part of the release process?
You can use one of the command line switches for the release tool to also build WIX. I'm going to wait until 2.3.2 to make a WIX installer.
@droidmonkey Sure, I saw that it is possible to set the CPACK_GENERATORS environment variable in order to include the MSI packages in the build. However, this means that at the moment, one has to setup a build environment with all the dependencies and then build KeePassXC oneself, just to get the MSI packages. This does not sound like less work than unpacking the .exe installer and manually build the MSI from the contents.
I thought the idea behind including the MSI packages as part of the build process was to make them available along with the other downloads, so that anyone needing them can simply download them instead of the .exe installer.
Yah that's what I meant, I will make an MSI installer available for 2.3.2
Great, thanks for your answer.
2.3.3 has an MSI installer.
Most helpful comment
2.3.3 has an MSI installer.