2012-04-16 64 views
0

我有一个自定义操作执行自定义操作DLL却是失败,我相信这是因为它不知道如何读的强名称组件我怎么能包括强名称组件文件在我安装

所以我有这个:

<Binary Id="StrongName" SourceFile="$(var.MyProject.TargetDir)MyProject.CA.dll"/> 

    <CustomAction Id="CreateIt" 
       BinaryKey="StrongName" 
       DllEntry="Create" 
       Execute="deferred" 
       Return="check" 
       HideTarget="no" 
       Impersonate="no" /> 

    <CustomAction Id="RemoveIt" 
       BinaryKey="StrongName" 
       DllEntry="Remove" 
       Execute="deferred" 
       Return="check" 
       HideTarget="no" 
       Impersonate="no" /> 

    <InstallExecuteSequence> 
      <Custom Action="CreateIt" Before="InstallFinalize">(NOT REMOVE =  "ALL")</Custom> 
      <Custom Action="RemoveIt" Before='InstallFinalize'>(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")</Custom> 
    </InstallExecuteSequence> 

那么我如何引用签名,因为我执行此DLL?

+0

顺便说一句,我唯一的错误是。该向导由于错误而过早结束。我没有更多的细节过去,不知道如何得到更多的细节 – Pittfall 2012-04-16 14:17:36

+0

如果你启用Windows安装程序日志记录,你应该得到各种错误的详细信息,包括.net堆栈转储。 – 2012-04-16 17:10:52

回答

0

我的问题的解决方案是由.NET 4中不支持的过时库导致的安全问题,它是一个不同的主题,所以除非有人好奇,否则我不会详细讨论它。

1

我从* .CA.DLL命名法假设您正在使用这是一个DTF自定义操作。这是托管您的托管DLL的本地封装的DLL。作为本地人,它不能被强有力地命名。

记录安装并查看日志中的失败原因。