如何创建一个Windows应用程序移植包括MySQL-ODBC,所有DLL-和OCX档案?(How

2019-10-18 09:42发布

我有一个应用程序,在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程序员

Answer 1:

下面的错误:

组件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/我从来没有用过,但值得一试。



Answer 2:

您可以使用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?