Если у вас есть проект C #, который сконфигурирован с CMake, логическим маршрутом будет использование CPack для создания установщика Winforms. CPack может работать с одним из нескольких генераторов (NSIS, WiX и т. Д.), Но вот простой пример (с библиотекой и исполняемым файлом) с использованием WiX.
cmake_minimum_required (VERSION 3.13)
# Create a C# project.
project(MyProj LANGUAGES CSharp)
# Include CMake utilities for CSharp, for WinForm and WPF application support.
include(CSharpUtilities)
# Group our library and executable source files.
set(DLL_SRCS
MyDLL/MyClass.cs
MyDLL/Properties/AssemblyInfo.cs
)
set(EXE_SRCS
App.config
Form1.cs
Form1.Designer.cs
Form1.resx
Program.cs
Properties/AssemblyInfo.cs
Properties/Resources.Designer.cs
Properties/Resources.resx
Properties/Settings.Designer.cs
Properties/Settings.settings
)
# Create the DLL library.
add_library(MyLibrary SHARED ${DLL_SRCS})
# Create the Winforms executable.
add_executable(MyWinFormApp ${EXE_SRCS})
# Set the .NET Framework version.
set_property(TARGET MyLibrary PROPERTY VS_DOTNET_TARGET_FRAMEWORK_VERSION "v4.6.1")
set_property(TARGET MyWinFormApp PROPERTY VS_DOTNET_TARGET_FRAMEWORK_VERSION "v4.6.1")
# Set the executable to be 32-bit.
set_property(TARGET MyWinFormApp PROPERTY WIN32_EXECUTABLE TRUE)
# Set the C# language version (defaults to 3.0).
set(CMAKE_CSharp_FLAGS "/langversion:latest")
# Set the source file properties for Windows Forms use.
csharp_set_windows_forms_properties(
${DLL_SRCS}
${EXE_SRCS}
)
# If necessary, link in other library dependencies that were built locally in this source tree.
target_link_libraries(MyWinFormApp MyLibrary)
# Add in the .NET reference libraries.
set_property(TARGET MyLibrary PROPERTY VS_DOTNET_REFERENCES
"Microsoft.CSharp"
"System"
"System.Core"
"System.Data"
"System.Drawing"
"System.Windows.Forms"
)
set_property(TARGET MyWinFormApp PROPERTY VS_DOTNET_REFERENCES
"Microsoft.CSharp"
"System"
"System.Core"
"System.Data"
"System.Drawing"
"System.Windows.Forms"
)
# Set the installation configuration, putting the targets in the 'bin' folder.
install(TARGETS MyLibrary
CONFIGURATIONS Release
RUNTIME DESTINATION bin
)
install(TARGETS MyWinFormApp
CONFIGURATIONS Release
RUNTIME DESTINATION bin
)
# Tell CPack to use the WIX generator.
set(CPACK_GENERATOR WIX)
include(CPack)
# Set the CPACK and WIX variables here.
set(CPACK_PACKAGE_NAME "MyWinFormApp")
set(CPACK_PACKAGE_VERSION "1.0.0")
set(CPACK_WIX_PROGRAM_MENU_FOLDER "My Winform Application")
Когда CMake генерирует решение Visual Studio, предустановленный проект CMake появится в обозревателе решений под названием PACKAGE ; построить это, чтобы создать установщик.
Генератор CPack WiX предоставляет множество переменных, позволяющих настроить установщик с указанием места установки, имени установщика, идентификаторов GUID, значков установщика и фирменных логотипов, лицензий, ярлыков меню «Пуск» и ярлыков на рабочем столе и т. Д. Я настоятельно рекомендую проверить ссылки CPack и CPack-WiX, чтобы увидеть, какие параметры настройки подходят для вашего проекта.
Обратите внимание, что для моей установки WiX я должен был убедиться, что .NET 3.5.1 был установлен и включил на моей машине.