无法加载文件或程序集错误

问题描述:

我正在创建一个.msi文件的安装程序。有一个用C#编写的与它关联的CustomAction程序。在此CustomAction程序中有三个COM对象引用是必需的,才能使其工作。他们如下。无法加载文件或程序集错误

  1. 活动DS IIS命名空间提供(C:\ WINDOWS \ SYSTEM32 \ INETSRV \ adsiis.dll)
  2. Windows脚本宿主对象模型(C:\ WINDOWS \ SYSTEM32 \ wshom.ocx)
  3. NetFwTypeLib(C:\ WINDOWS \ SYSTEM32 \ FirewallAPI.dll)

由于添加的信息,下面是我在我的程序中使用这些DLL的任务。

  1. 设置特定文件类型的MIME设置。
  2. 创建文件夹的桌面快捷方式。
  3. 要注册的程序作为防火墙例外

现在,这是我的问题。当我重建C#程序并在Visual Studio中执行CustomAction程序时,它工作正常,我可以像魅力一样完成上述三项任务。但是,当我实际构建.msi并尝试执行它并在我的系统上安装该程序时,它会给出错误。我正在使用日文操作系统,所以它会给出日文错误,所以我会尽力将错误信息翻译成英文。该错误是这样的:

*

文件或程序集Interop.IISOle, 版本= 1.0.0.0,文化=中立, 公钥=空'或其 依赖一个能不被加载。 找不到指定的文件。

*

给出此特定错误消息,因为它涉及到与第一DLL(adsiis.dll),因为它是包含IISOle命名空间中的一个。同样,它给出的错误消息与我从程序中引用的所有三个COM对象有关。现在我能从中理解的是,当代码在.msi文件中时,它无法找到合适的COM对象。我真的很困惑,为什么会发生这种情况,因为即使在我用来编写CustomAction的同一台机器上安装该程序时,安装程​​序也会提供相同的错误。有趣的是它从Visual Studio界面完美地执行。请帮助我做到这一点。提前致谢!

请注意,我使用的是Windows Vista商业版,但我需要我的安装程序能够安装在各种Windows操作系统从Windows Server 2003中的Windows 7

+0

您的操作是否按延期运行?此外,您不需要至少为2和3编写自己的自定义操作,请使用Wix的自定义操作! – 2010-05-11 10:32:36

安东,终于让我找到了什么问题。

当我参考,例如,dsiis.dll然后Visual Studio放置Interop模块,即Interop.IISOle。我的CustomAction程序的bin目录中的dll。这也是CustomAction.exe的位置。当我引用其他两个COM对象时,它会执行相同的过程; wshom.ocx和FirewallAPI.dll。但我使用Wix编写的实际安装程序将此CustomAction.exe复制到其他目录,而.msi使用该特定的CustomAction.exe文件。因为Interop.IISOle.dll(以及其他)无法在那里找到,所以发生此问题。 (该错误消息说,我需要从一开始就寻找它;我愚蠢的不去寻找它,但认为可能会有更大的问题)

所以这就是我所做的。我指示Wix项目将这些Interop DLL文件复制到安装程序使用的CustomAction.exe所在的相同位置。这很容易解决了这个问题。

对于WIX我完全是一个新手,再加上我们需要使用2和3的CustomAction,因为某些原因。

今天刚遇到这个。转到“打开或关闭Windows功能”,并查看IIS下的所有内容,包括IIS 6的内容。

确保选中“Internet信息服务”>“Web管理工具”>“IIS 6管理兼容性”下的“IIS元数据库和IIS 6配置兼容性”功能。

+0

感谢Damian Vogel所需的特定选项。 – maxwellb 2013-01-08 18:13:34

+0

哈哈thx无论如何,我只看到我的编辑被拒绝......“过于友好”的社区。重要的是信息不会丢失。 – 2018-01-25 17:58:53