<CPackWiXPatch>
<CPackWiXFragment Id= "CM_CP_bin.tm.exe">
<Environment Id="MyEnvironment" Action="set" Name="MEINEUMGEBUNG" Value="WertMeinerUmgebung"/>
</CPackWiXFragment>
</CPackWiXPatch>
Die eigentlichen WiX Elemente (hier nur eins) sind immer zwischen den zwei XML-Tags CPackWiXPatch und CPackWiXFragment zu finden. Durch das Id-Attribute im CPackWiXFragment wird der Bezug zu einem Objekt hergestellt, das installiert wird. Hier in diesem Fall ist es die Installation der Programms "tm". Wie diese Id ermittelt wird, wird weiter unten gezeigt.
Im Enviroment-Tag gibt es wieder eine Id, die als eindeutige Kennung des Tags dient. Das Attribute Action gibt an, was gemacht werden soll. Laut Dokumentation sind "create", "set" und "remove" möglich. Verwendet wird "set". Name ist der Name der Enviroment-Variablen und Value gibt den Wert an den sie bekommen soll.
1: CMAKE_MINIMUM_REQUIRED(VERSION 3.0.0)
2: IF (POLICY CMP0048)
3: CMAKE_POLICY(SET CMP0048 NEW) # Wg. VERSION im project Befehl
4: ENDIF (POLICY CMP0048)
5:
6: PROJECT(patch_env VERSION 1.2.3)
7: CMAKE_MINIMUM_REQUIRED(VERSION 3.1.0)
8:
9: ADD_EXECUTABLE(tm tm.c)
10: INSTALL(TARGETS tm DESTINATION bin)
11:
12: INSTALL(FILES tm.c DESTINATION src)
13:
14: # Standard --------------------------------------------------------
15: SET(CPACK_WIX_UPGRADE_GUID "C65BBF78-CE50-4534-BEDD-32881B31BE32")
16: SET(CPACK_WIX_CULTURES "de-DE")
17: SET(CPACK_GENERATOR WIX)
18: # Standard Ende ---------------------------------------------------
19:
20: SET(CPACK_WIX_PATCH_FILE "${CMAKE_CURRENT_SOURCE_DIR}/patch.xml")
21:
22: INCLUDE(CPack)
<?xml version="1.0 encoding="UTF-8?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi>
<Fragment>
<Feature Id="ProductFeature Display="expand Absent="disallow .../>
<FeatureRef Id="ProductFeature>
<ComponentRef Id="CM_CP_bin.tm.exe/>
<ComponentRef Id="CM_CP_src.tm.c/>
</FeatureRef>
</Fragment>
</Wix>
In dieser Datei ist die Id (CM_CP_bin.tm.exe), die in der Patch-Datei für das CPackWiXFragment-Tag benötigt wird. Nachdem sie
in der Patch-Datei eingesetzt wurde, wird der Kommentar in Zeile 29 der CMakeLists-Datei entfernt und das Paket wie
hier beschrieben zusammen gebaut.