Как создать приложение установщика Winforms с CMake - PullRequest
0 голосов
/ 28 августа 2018

Мне было интересно, как создать установщик MSI или его эквивалент для приложения C # Winforms с CMake? Я искал и нашел CPack, но ничего не упоминает, если он способен установить приложение Winforms. У меня есть DLL, которые также должны быть включены в мой .exe.

1 Ответ

0 голосов
/ 20 июля 2019

Если у вас есть проект 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 был установлен и включил на моей машине.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...