我的程序中引用了一个dll组件,为了使程序能找到这个dll组件,就用regsvr32 222.dll,把组件注册了一下。
在这个组件又定义了数据库的存放位置:DBPath = App.Path & "\Database\111.mdb",打包安装后,程序运行时提示找不到数据库的存放位置,因为注册组件时,把组件注册到了:"c:\windows\system32\"这个位置,所以只有手动把数据库复制到"c:\windows\system32\Database\111.mdb",程序才能正常运行。
程序的安装路径为:"c:\Program Files\Mysoft"。怎样编程把数据库存放在"c:\Program Files\Mysoft\Database\111.mdb",又让程序能正常运行(在组件中也要对数据库进行读写数据)?(我的弱弱的想法是:能不能把222.dll注册到c:\Program Files\Mysoft这个路径下。)

解决方案 »

  1.   

    regsvr32 "c:\Program Files\Mysoft222.dll"
      

  2.   

    楼上正解
    不过楼主的设计思路有问题
    DLL应该是你自己写的吧。你在主程序中应该把APP.PATH作为参数传给DLL,以便DLL调用数据库。
      

  3.   

    是这样的,
    程序设计时,工程/引用,添加的222.dll用的是绝对位置:如"E:/我的程序/222.dll",所以编译后的exe文件引用的也是"E:/我的程序/222.dll",
    程序打包安装后的位置是c:\Program Files\Mysoft(222.dll,数据库,exe文件也在文件夹中),如何编程实现打包后引用c:\Program Files\Mysoft\222.dll?
      

  4.   

    也就是说,程序设计时和安装后引用的dll的绝对位置一样时,程序才能正常运行。
    这个问题怎么解决呢?
      

  5.   

    其实很简单,在打包时,指定DLL为"AppPath"安装位置,
    也就是与你EXE文件所在的同一个位置。