我在做完这个程序的时候,用delphi6里自带得打包程序打包,结果发现了几个问题,想请教一下:
第一、我打完包,安装的时候,我发现找不到数据库路径,然后我又到odbc从新配置了数据库路径连接,问题解决了可是我不想这么做,太麻烦了,有什么办法不用从新配置。
第二、我打完包后,发现居然有11兆多,太大了。可是我在打包程序里有那几个选项是去掉庞大的bde多余的东西啊
第三、我打完包后、怎么样可以生成一个带卸载功能的
这几个,请各位详细说一下,谢谢
注:我是用delphi6里自带得打包程序打包

解决方案 »

  1.   

    第一、我打完包,安装的时候,我发现找不到数据库路径,然后我又到odbc从新配置了数据库路径连接,问题解决了可是我不想这么做,太麻烦了,有什么办法不用从新配置。
      建立一个文件DSN,这样就可以了
    第二、我打完包后,发现居然有11兆多,太大了。可是我在打包程序里有那几个选项是去掉庞大的bde多余的东西啊
      你可以看到,在安装文件列表中,会有几个关于BDE的文件夹,你删掉他们就行了
    第三、我打完包后、怎么样可以生成一个带卸载功能的
      系统会自动有一个卸载功能,在2000下的添加/删除程序列表中可以找到
      

  2.   

    谢谢你的回答,在问一下
    第一、DSN怎么建立
    第二、你指得那几个BDE文件夹,我在安装列表中没有看到啊,说具体些好吗,是哪个选项
    第三、我是说怎么做一个可以在程序下的卸在功能的不用添家/删除那个。
    然后我马上给分
      

  3.   

    我知道第三个的答案,可以分来?就是自己建一个不含窗体的程序来调用windows自带的卸载程序C:\WINDOWS\uninst.exe
    其实,你看看注册表HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
    就明白了. 
    program Uninstall;uses
      Windows, SysUtils, Forms;
    {$R *.RES}
    var
      path,strCommand: string;
    begin
      path:=ExtractFilePath(Application.Exename);
      strCommand:='C:\WINDOWS\uninst.exe -f"';
      strCommand:=strCommand+path+'DeIsL1.isu"  -c"'+path+'_ISREG32.DLL"';
      Winexec(PChar(strCommand),SW_SHOW);
    end.
      

  4.   

    至于第一个问题配置DSN也是通过注册表就可以解决,首先手工配置好DSN然后察看注册表有什么变化
    HKEY_LOCAL_MACHINE\Software\ODBC
    下相关驱动的项,明白?
    至于BDE好像在install第二步有选项
      

  5.   

    第一、我打完包,安装的时候,我发现找不到数据库路径,然后我又到odbc从新配置了数据库路径连接,问题解决了可是我不想这么做,太麻烦了,有什么办法不用从新配置。
    --建立odbc部件
    第二、我打完包后,发现居然有11兆多,太大了。可是我在打包程序里有那几个选项是去掉庞大的bde多余的东西啊
    --去掉bde部件或删除bde文件
    第三、我打完包后、怎么样可以生成一个带卸载功能的
    --应是自带的
      

  6.   

    关于第一个,是要在打包程序里从新添加一个HKEY_LOCAL_MACHINE\Software\ODBC
    下相关驱动的项吗.
    关于第三个,
    program Uninstall
    uses
      Windows, SysUtils, Forms;
    {$R *.RES}
    var
      path,strCommand: string;
    begin
      path:=ExtractFilePath(Application.Exename);
      strCommand:='C:\WINDOWS\uninst.exe -f"';
      strCommand:=strCommand+path+'DeIsL1.isu"  -c"'+path+'_ISREG32.DLL"';
      Winexec(PChar(strCommand),SW_SHOW);
    end.
    我怎么调用这个阿,是把这个也打倒包里吗,怎么打进去,说详细一些,如果分不够用,我可以加
      

  7.   

    我想有二种方法打包:(个人观点)
    1 自己作一个打包程序
       使用类似DLLShow的软件看看你程序使用的所有.dll动态连接库,把其中有必要的放入你的程序,然后写一个安装程序吧:复制文件加修改注册表
    2 到网上找一个打包软件
      

  8.   


    -----------------------------------------------------------------------
    关于第一个,是要在打包程序里从新添加一个HKEY_LOCAL_MACHINE\Software\ODBC
    下相关驱动的项吗.
    -----------------------------------------------------------------------回答:
      你观察一下配置odbc前后的注册表的变化,具体就是在HKEY_LOCAL_MACHINE\Software\ODBC
    下的相关驱动的键值.-------------------------------
    关于第三个,
    program Uninstall
    uses
      Windows, SysUtils, Forms;
    {$R *.RES}
    var
      path,strCommand: string;
    begin
      path:=ExtractFilePath(Application.Exename);
      strCommand:='C:\WINDOWS\uninst.exe -f"';
      strCommand:=strCommand+path+'DeIsL1.isu"  -c"'+path+'_ISREG32.DLL"';
      Winexec(PChar(strCommand),SW_SHOW);
    end.
    我怎么调用这个阿,是把这个也打倒包里吗,怎么打进去,说详细一些,如果分不够用,我可以加
    ---------------------------------------------------------------------------------
    上面是告诉你创建一个不包含任何窗体的一个程序,你可以先建立一个普通程序,然后将form从工程中删除,最后修改工程文件如上.编译后生成一个卸载程序.打包时(install shield for delphi)将卸载程序包含进去,当然要求该程序与主程序在相同目录.