使用COM Dll进行Windows安装程序设置

时间:2013-01-09 10:10:47

标签: .net com windows-installer setup-project winforms-interop

这是一个与NITGEN FINGKEY(指纹扫描仪)COM NBioBSPCOMLib.dll连接的Windows窗体应用程序。我添加了他们的dll作为参考,生成\ obj \ Debug \ Interop.NBioBSPCOMLib.dll。 Project-> Build->平台目标位于x86中。我在创建设置向导时遵循以下步骤:

  1. 确保应用程序定位到适当的平台x86。
  2. 创建设置向导项目时,请不要包含源文件和调试文件。
  3. 创建设置向导项目后,右键单击创建的项目,然后单击属性。
  4. 单击“先决条件”,然后在“指定先决条件的安装位置”中选择“从与我的应用程序相同的位置下载先决条件”。点击“确定”。
  5. 在目标计算机上的文件系统中,添加特殊文件夹并选择“程序文件文件夹”。
  6. 单击应用程序文件夹,右键单击(appname)(活动)的主输出,然后选择“从appname的主输出创建快捷方式”。重新命名文件。然后将n拖放到“Program Files Folder”。
  7. 执行#6,而是拖放到用户桌面。
  8. 执行#6,而是拖放到用户的程序菜单。
  9. 右键单击“应用程序文件夹”并选择“属性为AlwaysCreate选择true。
  10. 对于Program Files文件夹,用户桌面和用户程序菜单执行#8。
  11. 在“应用程序文件夹”中右键单击并选择“添加文件”。选择interop.NBioBPSCOMlib.dll并将其属性寄存器设置为vsdrfCOM。
  12. 在应用程序文件夹中右键单击并选择添加文件。选择NBioBSPCOMLib并将其属性寄存器设置为vsdrfCOM。
  13. 构建项目。
  14. 当我在Windows 7中安装它时,该应用程序工作。但是当我在XP SP 3中安装它时,我得到了“尝试读取或写入受保护的内存。这通常表明其他内存已损坏。”异常。

    我添加COM dll的方式有问题吗?

    更新

    我将应用程序移植到.NET Framework 4.0。我添加了dll作为参考,设置嵌入式互操作类型:true。创建安装程序安装程序,而无需在Application文件夹中手动添加dll。现在我收到此错误:“system-runtime-interopservices-comexception-0x80040154”。我在其他帖子中发现:link不在注册表中,但指纹的驱动程序安装程序不应该执行此操作吗?

    我尝试在dll上手动执行regsvr32但是它只是说应用程序遇到了问题并需要关闭。当我取消注册dll时,getxception返回。

1 个答案:

答案 0 :(得分:1)

是的安装程序日志非常详细:)但你只需搜索它“NBioBSPCOMLib”,你就会看到他正在做什么。在你的情况下它有点奇怪,文件放在C:\ Program Files \ Wikonec \ LTODoctorVerify \ Interop.NBioBSPCOMLib.dll(见第1024和1025行)但稍后当我们想要注册它的路径“file:// / C:/ Users / Jemuel / Documents / Visual Studio 2010 / Projects / fingerprint / FingerPrintValidate / bin / Debug / Interop.NBioBSPCOMLib.dll“(第1124行)。我是正确的,如果我认为windows7是你的开发电脑和winXP没有视觉工作室的测试机器?