比如,有一个dll文件 a.dll
用户在选择安装目录时,选择了 c:\Program Files
这个dll需要注册,
我应该在注册表的某个位置,写上 c:\program files\a.dll该怎么办?其中,C;\program files可以换成用户选择的任意目录,还可以创建,是个变化的值。

解决方案 »

  1.   

    我记得以前用installshield时这些问题根本就不用担心啊!它会给你做的.-除非你是用的自编脚本.
      

  2.   

    而且,按照向导做了以后,在用户的指定目录下并没有出现我的dll,奇怪。
    我明明放进Files Groups的Program Dlls中去了啊。
      

  3.   

    况且,dll好象没必要注册的吧!
      

  4.   

    DLL已经出现了,原来没放进compinents
    要注册dll而且,还有一段license说明,怎么改成我自己的?(今天刚开始用InstallShield)
      

  5.   

    那在用户的指定目录下你的exe有了吗?我怀疑...
      

  6.   

    license改完了。没有exe,我只是安装一个驱动。
      

  7.   

    function SetupRegistry()
     NUMBER nResult;
     STRING szKey;
     STRING szClass;
     STRING szPath;
     STRING szTitle; begin  // TODO : Add all your registry entry keys here
      //
      //
      //    RegDBCreateKeyEx, RegDBSetKeyValueEx....
      //  //nResult = CreateRegistrySet( "" );  szKey = "HKEY_LOCAL_MACHINE\\SOFTWARE\\StockDrv";
      szClass = "Driver";
      szPath = svDir+"\\stockio.dll";
      szTitle = "RegDBCreateKeyEx & RegDBSetKeyValueEx";  //Add a Key of Driver
      nResult = RegDBCreateKeyEx(szKey,szClass);
      if (nResult<0) then
          MessageBox("RegDBCreateKeyEx failed.", SEVERE);
          //abort;
      else
          SprintfBox(INFORMATION, szTitle, "Successfully created: %s", szKey);
      endif;  //Set the install path to Driver
      nResult = RegDBSetKeyValueEx (szKey, szClass, REGDB_STRING, szPath, -1);  if (nResult<0) then
          MessageBox("RegDBSetKeyValueEx failed.", SEVERE);
          //abort;
      endif;  return nResult;
     end;
      

  8.   

    只需要将你的安装目录如“c:\\a\\"变成TARGETDIR即可
      

  9.   

    解决了。
    得先改变主键。NUMBER nRootKey;   nRootKey = HKEY_LOCAL_MACHINE;
       if (RegDBSetDefaultRoot(nRootKey) < 0) then
       //   MessageBox("First call to RegDBSetDefaultRoot failed.", SEVERE);
       else
       //   MessageBox("Root key successfully set to HKEY_LOCAL_MACHINE.", INFORMATION);
       endif;