У меня есть приложение для Windows, созданное с использованием MSVC и упакованное как файл .MSI с использованием WiX. Вся сборка управляется cmake, а WiX вызывается с помощью модуля CPackWIX.
Сейчас я пытаюсь расширить среду сборки, чтобы также собрать пакет .APPX. Я слежу за официальная документация от FireGiant.
После установки WiX Expansion Pack я добавил расширение FgAppxExtension.wixext, добавив его к переменной CPACK_WIX_EXTENSIONS следующим образом:
SET(CPACK_WIX_EXTENSIONS WixUtilExtension FgAppxExtension.wixext)
Затем я отредактировал исходный код .wxs, как указано здесь.
Сборка выполняется без ошибок, но не создает пакета .APPX. Он создает только обычный пакет .MSI. В файле wix.log вижу строчку:
"C:/Program Files (x86)/WiX Toolset v3.11/bin/light.exe" -nologo -out "F:/dev/MyApp-build/_CPack_Packages/win32/WIX/MyApp-1.15.0+115-default-eb4abec2e9d2+.msi" -ext "FgAppxExtension.wixext" -ext "WixUIExtension" -ext "WixUtilExtension" -cultures:de-DE;en-US "-loc" "C:/dev/MyApp/resources/packaging/win/WIX.Texts.de-DE.wxl" "-loc" "C:/dev/MyApp/resources/packaging/win/WIX.Texts.en-US.wxl" "F:/dev/MyApp-build/_CPack_Packages/win32/WIX/directories.wixobj" "F:/dev/MyApp-build/_CPack_Packages/win32/WIX/files.wixobj" "F:/dev/AusweisApp2-build/_CPack_Packages/win32/WIX/features.wixobj" "F:/dev/MyApp-build/_CPack_Packages/win32/WIX/main.wixobj"
для файла .MSI, но нет строки для пакета .APPX.
В документации написано, что после добавления ссылки на FgAppxExtension.wixext
... the build process will attempt to create AppX packages.
но этого не происходит.
Обратите внимание, что добавление неправильного расширения в файл cmake приведет к ошибке сборки.
Изменение исходного кода .wxs без добавления расширения также приведет к ошибке:
The Product element contains an unhandled extension element 'fga:Appx'.
Поэтому я думаю, что расширение FgAppxExtension.wixext загружено правильно, но пакет .APPX не собран.
Есть какие-нибудь подсказки?





Загрузки расширения FgAppxExtension.wixext недостаточно для сборки пакета .appx при сборке пакета .msi. FgAppxExtension делает это с помощью MSBuild, чего нет при использовании CMake.
Когда вы не используете MSBuild, вы можете вызвать инструмент FireGiant.Appx.exe после того, как Light.exe создаст файлы .msi и .wixpdb.