我把midas.dll打包到程序里装到别人的system32下,在有的电脑上调用数据时midas.dll还是出错,但是在“开始”--“运行”里手动注册一下程序就可以用了,但是不能这样给用户用啊,所以想写一个console application文件打包进去,安装时调用console application文件直接注册midas.dll不知道这个思路可不可以,console application里注册midas.dll应该怎么写,查了一下没有这方面的知道,请大家帮下忙,真的很急,我用NSIS打的包,在打包程序里能注册更好,请大家帮下忙跪谢大家!

解决方案 »

  1.   

    你直接把这个文件和exe文件放在同一个目录下不可以吗?这样应该不需要注册的
      

  2.   

    你可以程序里自已去调用。如果你想用批处理文件注册的话使用RegSvr32 DLLName就可以了,反注册用RegSvr32 -u DLLName,如果用程序的话,使用以下代码。
    type
      TRegisterMode = (regRegister, regUnregister);
    function OLERegisterDLLFile(strFileName: string; mode: TRegisterMode): BOOLEAN;
    type
      TOleRegister = function: HResult;
    var
      hLib: THandle;
      fnAdr: TFarProc;
    begin
      Result := FALSE;  hLib := LoadLibrary(PCHAR(strFileName));
      if (hLib > 0) then
      begin
        try
          if (mode = regRegister) then
            fnAdr := GetProcAddress(hLib, pchar('DllRegisterServer'))
          else
            fnAdr := GetProcAddress(hLib, pchar('DllUnregisterServer'));      if (fnAdr <> nil) then
            Result := (TOleRegister(fnAdr) >= 0);
        finally
          FreeLibrary(hLib);
        end;
      end;
    end;
      

  3.   

    直接在打包程序里做.function OnFirstUIAfter()
      string Path;
    begin
      Path=WINSYSDIR^"midas.dll";
      LaunchApp("Regsvr32.exe",Path); 
    end;
      

  4.   

    给楼主一个最最简单的方法,你把uses midas去掉,换成uses midasLib,重新编译后,不需要打包midas.dll了,也不需要注册,因为你已经编译进去了。
      

  5.   

    我给出的这个方法,很多人都还不知道哦,呵呵,不然光要考虑打包上midas.dll就够麻烦了,有时候还会忘记呢。大家要记住哦,哈哈
      

  6.   

    急问,CSDN怎么给不了分啊,IE状态栏提示脚本错误
      

  7.   

    嗯,xjjrocker(了无痕) 说的没错。这是3kdelphi 最早提出来的一个tip。唯一就是文件变大。
      

  8.   

    对的,会变大,不过也就是变大144k而已,呵呵,而且我们对于自己的开发的程序exe也会给与压缩发布的,所以这个点增加就几乎没有什么影响了
      

  9.   

    修改midas.pas所条用的midas.dll的名称,将midas.dll文件也改成相应的文件名,放到程序目录下即可