Если вы используете пользовательское действие c # wix. Эта проблема 'dll not found' обычно возникает из-за пропуска следующих пунктов:
Ваш двоичный файл может не требовать специальных действий. Случай неправильного двоичного файла, используемого в настраиваемом действии.
Ваше имя настраиваемого действия может не совпадать с тем, что записано в проекте настраиваемого действия. Это имя чувствительно к регистру.
Попробуйте следующую команду, чтобы определить, присутствует ли в ca.dll метод настраиваемого действия.
Dumpbin.exe поставляется с пакетами разработки Visual Studio C ++. Это будет список всех открытых методов пользовательских действий. Выполнить в командной строке разработки Visual Studio.
Dumpbin.exe /exports Sample.ca.dll
Атрибут метода не предусмотрен для настраиваемого действия. Если вы не предоставите CustomAction как атрибут метода, он никогда не будет открыт через ca.dll.
[CustomAction]
public static ActionResult customActionName(Session session)
{
//Do Action
return ActionResult.Success;
}
Редактировать 2:
Обычно мы не указываем абсолютный путь к любому файлу, вы можете использовать ссылку на проект CA для получения пути к ca.dll,Например. "$ (Var.CustomActionProjectName.TargetDir) \ Scripts.CA.dll". Здесь CustomActionProjectName - это проект, на который ссылается установщик для настраиваемого действия. Этот путь может быть определен в файле wxi для лучшего структурирования.
Файл Installer.wxi
<?define customActionDllPath="$(var.CustomActionProjectName.TargetDir)\Scripts.CA.dl" ?>
CustomAction.wxs
<?include "Installer.wxi"?>
<Binary Id="MyScripts" SourceFile="$(var.customActionDllPath)\Scripts.CA.dll" />