Дополнительное действие WIX: использовать dllimport

У меня есть установщик WiX и проект Custom Actions. Я добавил библиотеку С# в качестве ссылки на проект пользовательского действия. Эта dll C# использует DllImport для одной dll C++. При установке получаю ошибку: не удается загрузить DLL mycpp.dll: указанный модуль не найден. Я добавил mycpp.dll в проект CA и попытался использовать свойства: встроенный ресурс, скопировать в выходной каталог - но безрезультатно. Как заставить программу установки найти mycpp.dll?


person Anton23    schedule 11.10.2016    source источник


Ответы (1)


У меня была эта проблема раньше. Прочитав файлы MSBuild для wix, я в конце концов нашел свойство, которое используется в качестве списка для dll, необходимых в самораспаковывающемся пакете, содержащем dll настраиваемого действия.

в wix.ca.targets (в папке sdk) есть свойство CustomActionContents, которое используется при запуске makefxca.

Вот комментарий для этого набора целей msbuild, которые упаковывают вашу DLL-библиотеку с настраиваемыми действиями.

<!--
==================================================================================================
PackCustomAction

Creates an MSI managed custom action package that includes the custom action assembly,
local assembly dependencies, and project content files.

[IN]
@(IntermediateAssembly) - Managed custom action assembly.
@(Content) - Project items of type Content will be included in the package.
$(CustomActionContents) - Optional space-delimited list of additional files to include.

[OUT]
$(IntermediateOutputPath)$(TargetCAFileName) - Managed custom action package with unmanaged stub.
==================================================================================================
-->

а также

<!--
Items to include in the CA package:
 - Reference assemblies marked CopyLocal
 - Project items of type Content
 - Additional items in the CustomActionContents property
-->

Таким образом, похоже, что вы можете пометить свою ссылку на mycpp.dll как локальную копию, и она будет автоматически выбрана, или вы можете добавить новое свойство в свой проект настраиваемого действия (возможно, отредактируйте csproj и добавьте свойство), которое содержит путь к dll, и он будет подобран.

person Brian Sutherland    schedule 11.10.2016