2016-10-11 5 views
0

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

ответ

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, и он будет поднят.

Смежные вопросы