Должны ли пользовательские DLL-файлы action для установщика msi создаваться только с помощью Visual Studio?
-
09-09-2019 - |
Вопрос
Я создал установочный проект с помощью Visual Studio.Мне также нужны некоторые созданные пользовательскими действиями DLL с Visual c ++, и это работает просто отлично, но я не хочу включать файлы среды выполнения visual c ++ в свой проект.Итак, возможно ли собрать эту dll с помощью какого-либо другого компилятора c ++?
Я пытался сделать это с помощью Dev-c ++, но при компиляции я получаю несколько сотен ошибок компиляции из файлов msi.h и msiquery.h
Решение
Вероятно, самое простое решение - связать ваши библиотеки DLL со статической библиотекой времени выполнения.
Другие советы
В общем случае пользовательские библиотеки DLL действий должны полагаться только на библиотеки DLL, которые уже были в системе до установки.Это означает, например, статическое связывание CRT, как отмечено MSalters, но также применимо к любой другой зависимости от сторонних библиотек.
Другой вариант - установить связь с операционной системой CRT, как объясняет Коби Кахане здесь.
Я создал пользовательскую библиотеку dll для своего установочного проекта.Моя dll очень проста, регистрирует несколько сервисов, не зависящих от CLR или какой-либо сторонней библиотеки.Имеют статическую связь только с msi.lib.
Я удалил предварительные требования к установщику .net и Windows из проекта установки.Моя настройка завершается с ошибкой на компьютерах Mac, не имеющих .net framework ..?
Поскольку у меня нет никакого .net-зависимого кода, каким должно быть решение этой проблемы.Я не хочу, чтобы пользователь сначала загружал фреймворк для установки.
С уважением Амит
здесь вы можете найти несколько коротких примеров использования C ++ DLL для пользовательских действий:
http://www.simple-talk.com/dotnet/visual-studio/visual-studio-setup---projects-and-custom-actions/