我有一个应用程序,在VB6程序需要安装在Windows 7中的一些的dll文件和OCX档案。
我已经有创建的安装程序innosetup ,包括所有需要的文件,并安装MySQL连接-ODBC的Windows(x86和64位)
如果我只是把所有文件到一个文件夹中安装doesent工作,我得到的错误
组件MSDATGRD.OCX或它的一个依赖未正确注册:一个文件丢失或无效
我尝试了搜索MSDATGRD.OCX portableapp但不知道
有一个简单的解决办法,使这个应用程序无需安装运行?
您可以下载我要打包成PortableApp文件在这里 。
我试图打开与的Dependency Walker中的Setup.exe,但不幸的是我没有足够的专业知识来使用该工具。 这里截图
虽然的Dependency Walker的输出似乎是骗人的,在这里看到:
赢7,64位的DLL问题
反正我下载的那些9个文件在这里和包装他们 ,现在它显示更加其他文件丢失:pastebin.com/8LawEbuk 7本doesent似乎导致任何地方引起的Dependency Walker太旧
我在寻找的东西很简单 ,最终打造 ,无论文件大小,因为我不是一个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月被descontinued! 另外请注意,这样做是一个肮脏的黑客,应该尽量避免。 我不知道在Windows 7和Windows 8会发生什么(说实话,你不应该花时间与招数,但改变便携式DLL组件)
我也听说过http://boxedapp.com/我从来没有用过,但值得一试。
您可以使用Visual Basic打包和部署向导 (PDW)来创建一个标准安装程序包为您的程序,然后检查什么出现在依赖列表。 该计划将需要管理员权限才能安装。
要使用OCX没有管理员权限,您需要检查,如果您可以通过免注册COM激活的ActiveX。 您可以通过生成从Windows SDK mt.exe清单,但让我的清单中的一个VB6项目更好的支持。 您需要隔离不仅网格控件但无论COM对象由控制要求。
MSDATGRD.OCX需要这些文件:MSSTDFMT.DLL和Msbind.dll。
文章来源: How do I create a Windows portable app including mysql-ODBC, all DLL- and OCX-files?