我有一个应用程序,编程在VB6需要一些DLL文件和OCX文件安装在Windows 7中。
我已经有一个使用innosetup创build的安装程序,其中包含所有需要的文件,并且还安装了用于Windows的x86 连接器 – ODBC ( x86,64位)
如果我只是把所有的文件放入一个文件夹安装doesent工作,我得到的错误
组件MSDATGRD.OCX或其某个依赖关系未正确注册:文件丢失或无效
我试图searchmsdatgrd.ocx portableapp,但没有主意
是否有一个简单的解决方法,使这个应用程序无需安装运行?
您可以将我想要打包的文件下载到PortableApp中。
我试图用依赖沃克打开Setup.exe,但不幸的是我没有足够的专业知识来使用该工具。 这里有一个截图
虽然依赖walker的输出似乎是欺骗性的,请看这里:
赢7,64位,DLL的问题
无论如何:我在这里下载了这9个文件并打包 ,现在它显示了更多的其他文件丢失:pastebin.com/8LawEbuk 7这个doesent似乎导致任何地方导致依赖沃克太旧
我正在寻找一些非常简单的东西,不pipe最终的文件大小,因为我不是一个Windows程序员
下面的错误:
组件MSDATGRD.OCX或其某个依赖关系未正确注册:文件丢失或无效
可能是因为你还没有注册ocx组件。 如果您手动分发此组件,则还需要将其注册到用户的机器中。 为此,请发出以下命令:
regsvr32 msdatgrd.ocx
从命令行(请注意,您需要有管理员权限)。
如果您不想将应用程序安装在典型的应用程序目录(即:C:\ Program Files)中,则可以使用%APPDATA%或%LOCALAPPDATA%变量来获取Romaming(如果在网络上)和本地用户的应用程序目录,分别。 你也可以使用Windows API来做到这一点。 例如:
if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, 0, szPathName))) { PathAppend(szPathNam, _L"\\YourCompany\\YourProduct\\") ); }
除了.ocx(这是一个实现特定接口的Dll),你应该注意到,如果你使用其他方法从你在setup.exe中写入的DLL,那么你必须导出它们。 下面的好文章:
http://msdn.microsoft.com/en-us/library/z4zxe9k8.aspx
http://www.codeproject.com/Articles/28969/HowTo-Export-C-classes-from-a-DLL
c ++导出和使用dll函数
编辑:
我找到了这个:
使用OCX而不注册它
请注意,Windows XP将于2014年4月停止使用! 另外请注意,这样做是一个肮脏的黑客应该避免。 我不知道在Windows 7和Windows 8上会发生什么(说实话,你不应该花时间与技巧,但更改为一个可移植的dll组件)
您可以使用Visual Basic打包和展开向导 (PDW)为您的程序创建标准安装程序包 ,然后检查依赖项列表中显示的内容。 该软件包需要安装Admin权限。
要使用不带管理员权限的OCX,您需要检查是否可以通过无注册COM来激活ActiveX。 您可以通过Windows SDK中的mt.exe生成清单,但Make My Manifest更好地支持VB6项目。 您不仅需要隔离网格控件,还需要隔离控件所需的任何COM对象。
MSDATGRD.OCX需要这些文件:msstdfmt.dll和Msbind.dll。