У меня есть установщик WiX и проект Custom Actions. Я добавил библиотеку C # в качестве ссылки на проект Custom action. Эта C # dll использует DllImport для одной C ++ dll. При установке я получаю сообщение об ошибке: не могу загрузить DLL mycpp.dll
: указанный модуль не найден. я добавил mycpp.dll
в проект CA и попытался использовать свойства: встроенный ресурс, скопировать в выходной каталог — но безрезультатно. Как я могу найти мой установщик найти mycpp.dll
?
У меня была эта проблема раньше. Прочитав файлы 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, и он будет поднят.
Других решений пока нет …