win_dev - OpenNebula/one-apps GitHub Wiki

Build Your Own Package

Requirements

The NSSM service manager is the preferred tool for managing services on Windows. It handles long-running services better and more cleanly (for example, SrvAny/RHSrvAny fail to terminate their child processes on stop). NSSM is in the public domain and the binary is provided in this repo. There are 32-bit and 64-bit versions available; currently the 32-bit version is used, since it covers a broader range of systems.

If you wish to use rhsrvany instead of NSSM, you must set the shell variable SRV_MANAGER to rhsrvany; otherwise it will default to nssm.

On RHEL (CentOS) and Fedora systems, the required binary rhsrvany.exe is distributed as part of the package virt-v2v and placed into /usr/share/virt-tools/rhsrvany.exe. Please copy the EXE into your local repository clone before creating the MSI.

Steps

The script generate.sh builds the MSI package. It's a wrapper around the wixl command from msitools. It reads package.wxs, a package definition in the WiX XML format. Package name or version can be overridden by the environment variables NAME and VERSION. For example:

$ TARGET=msi ./generate.sh
$ NAME=one-context TARGET=msi ./generate.sh
$ VERSION=1.0.0 TARGET=msi ./generate.sh

The new package is created as ${NAME}-${VERSION}.msi, e.g. one-context-1.0.0.msi in the out/ directory.

You can also build both the ISO and MSI targets, by running:

$ ./generate-all.sh

To build with a different service manager and explicit version:

$ env SRV_MANAGER=rhsrvany VERSION=5.13 ./generate-all.sh

During the package build please ignore the following assertion:

(wixl:22764): wixl-CRITICAL **: wixl_wix_builder_install_mode_to_event: assertion 'modeString != NULL' failed

This is caused by skipping the attribute Start in ServiceControl. The parameter is optional in the WiX specification, but msitools looks for it nonetheless. The package is built with no problems.