这是一个windows表单应用程序,连接NITGEN FINGKEY(指纹扫描仪)COM NBioBSPCOMLib.dll。我添加了他们的dll作为参考,生成objDebugInterop.NBioBSPCOMLib.dll。Project->Build->Platform目标是在x86中。当我创建安装向导时,我遵循以下步骤:
- 确保应用程序针对正确的平台x86。
- 创建安装向导项目时,不要包含源文件和调试文件。
- 创建安装向导项目后,右键单击创建的项目并单击属性。
- 单击先决条件,在指定先决条件的安装位置中选择"从与我的应用程序相同的位置下载先决条件"。单击ok。
- 在目标机的文件系统中,添加特殊文件夹,选择"Program Files Folder"。
- 单击应用程序文件夹,右键单击Primary output from (appname) (Active),选择"从appname的Primary output创建快捷方式"。重命名文件。然后拖放到"Program Files Folder"。
- 执行#6,但将其拖放到用户桌面。
- 执行#6,但将其拖放到用户程序菜单。
- 右键单击应用程序文件夹,选择属性。为AlwaysCreate选择true
- 程序文件夹,用户桌面和用户程序菜单执行#8。
- 在应用程序文件夹中右键单击并选择添加文件。选择interop.NBioBPSCOMlib.dll并设置其属性寄存器为vsdrfCOM。
- 在应用程序文件夹中右键单击并选择添加文件。选择NBioBSPCOMLib并将其属性寄存器设置为vsdrfCOM。
- 构建项目。
当我在windows 7中安装这个程序时,应用程序工作了。但是当我在XP SP 3中安装这个程序时,我得到一个"试图读取或写入受保护的内存"。这通常是其他内存损坏的指示。
我添加COM dll的方式有问题吗?
我将应用程序移植到。net Framework 4.0。我添加了dll作为参考,设置了嵌入式互操作类型:true。创建了安装程序安装程序,而没有在应用程序文件夹中手动添加dll。现在我得到这个错误:"system-runtime-interopservices-comexception-0x80040154"。我从其他一些帖子中发现:链接不在注册表中,但指纹的驱动程序安装程序不应该做这部分吗?
我尝试手动在dll上做regsvr32,但它只会说应用程序遇到了问题,需要关闭。当我注销dll时,comexception返回
是的,安装日志非常冗长:)但是你可以简单地搜索"NBioBSPCOMLib",你会看到他在做什么。在你的情况下,它有点奇怪,文件放在C:Program FilesWikonec LTODoctorVerifyInterop.NBioBSPCOMLib.dll(见1024和1025行),但后来当我们想要注册它的路径"文件:///C:/Users/Jemuel/Documents/Visual Studio 2010/Projects/fingerprint/FingerPrintValidate/bin/Debug/Interop.NBioBSPCOMLib.dll"(1124行)被使用。如果我假设windows7是您的开发pc和winXP是没有visual studio的测试机,我是对的?