我使用dll来安装在msi中打包的驱动程序。 以下是摘录:
<Binary Id="CustomAction2.CA.dll"
src="../artifacts/CustomAction2.CA.dll" />
<CustomAction Id="Install"
Execute="deferred"
BinaryKey="CustomAction2.CA.dll"
DllEntry="CustomAction1" />
<CustomAction Id="InstallWithProperty"
Property="Install"
Value="location=[DEFAULT_INSTALLDIR]$FULL_NAME;name=myDll.dll" Execute="immediate"/>
<InstallExecuteSequence>
<Custom Action="InstallWithProperty" After="InstallInitialize"/>
<Custom Action="Install" After="InstallFiles" />
</InstallExecuteSequence>
我面临同样的问题。当调用自定义操作时,它说。
自定义操作引发的异常: System.Reflection.TargetInvocationException:抛出了异常 通过调用的目标。 ---&GT; System.DllNotFoundException: 无法加载DLL&#39; myDll.dll&#39;:指定的模块无法加载 找到。 (来自HRESULT的异常:0x8007007E)at CustomAction2.CustomActions.ConfigDriver(IntPtr hwndParent,UInt16 fRequest,String lpszDriver,String lpszArgs,String lpszMsg,UInt16 cbMsgMax,Int64&amp; pcbMsgOut)at CustomAction2.CustomActions.CustomAction1(会话会话)---结束 内部异常堆栈跟踪--- at System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo 方法,对象目标,对象参数,SignatureStruct&amp; SIG, MethodAttributes methodAttributes,RuntimeType typeOwner)at System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo方法, 对象目标,对象参数,签名sig,MethodAttributes methodAttributes,RuntimeType typeOwner)at System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder binder,Object parameters,CultureInfo culture, 布尔值skipVisibilityChecks)at System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder binder,Object parameters,CultureInfo culture)at Microsoft.Deployment.WindowsInstaller.CustomActionProxy.InvokeCustomAction(的Int32 sessionHandle,String entryPoint,IntPtr remotingDelegatePtr) CustomAction安装返回实际的错误代码1603(注意这可能 如果翻译发生在沙箱内,则不是100%准确)
有人可以提供帮助吗?我想使用myDll.dll进行进一步安装,这是.msi文件的一部分。
答案 0 :(得分:0)
您正在传递mydll.dll,这意味着它将尝试在运行DTF CA的当前目录/ temp目录中找到它。而是传递文件的文件密钥。 (File @ Id属性)。
name = [#myDLL.dll]这将格式化为类似C:\ Program Files \ My Company \ My Product \ myDLL.dll
另一种方法是将DLL添加到CA项目中,以便将其打包到CA中并在安装时解压缩到CA当前目录。