InstallShield 写注册表,如何得到程序安装路径?

cuizg 2005-10-12 12:48:50
用InstallShield打包程序,请问如何得到安装路径<TARGETDIR>,我想将此路径写到注册表里
...全文
319 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cuizg 2005-10-18
  • 打赏
  • 举报
回复
我是这么写的,在OnFirstUiBefore 的end前加入这段程序(szKey和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;

szKey="SOFTWARE\\DCH\\DS";
if RegDBKeyExist(szKey) < 0 then
RegDBCreateKeyEx(szKey,"");
endif;
RegDBSetKeyValueEx(szKey,"InstallPath",REGDB_STRING,TARGETDIR,-1);

好像不行啊,我再查查
cuizg 2005-10-18
  • 打赏
  • 举报
回复
to winehero:

你的这段程序放在哪里比较好? 我是第一次用InstallShield,很多不懂,让各位大侠见笑了
winehero 2005-10-18
  • 打赏
  • 举报
回复
那就在RegDBCreateKey之前先调用 RegDBSetDefaultRoot 将当前ROOT设为 HKEY_LOCAL_MACHINE

// Set the root key to HKEY_LOCAL_MACHINE.

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;

cuizg 2005-10-18
  • 打赏
  • 举报
回复
to winehero:
RegDBCreateKey 好像只能建在HKEY_CLASSES_ROOT下

我的安装程序注册一般都在 HKEY_LOCAL_MACHINE,可以更改注册目录吗?
winehero 2005-10-18
  • 打赏
  • 举报
回复
//假如你要写入的项为szKey

if RegDBKeyExist(szKey) < 0 then
//this key not exsit ,pls create
RegDBCreateKeyEx(szKey,"");
endif;
//在使用RegDBSetKeyValueEx赋Key值
RegDBSetKeyValueEx(szKey,szNumName,nType,szNumValue,nSize);

—————————————————————————————————————————

使用我这个方法写注册表,然后在别的程序中读取制定的存储安装路径的注册表项值,不行吗?!
TechnoFantasy 2005-10-18
  • 打赏
  • 举报
回复
你可以在is中把你的安装路径写道注册表里面,然后别的程序读这个值就可以获得了。
cuizg 2005-10-18
  • 打赏
  • 举报
回复
可是我要在别的程序调用这个路径啊,就是installshield安装完成后
cuizg 2005-10-18
  • 打赏
  • 举报
回复
ok,总算搞定了,原来要自己写 OnFirstUIAfter 这个过程,InstallShield不会自动生成,谢谢winehero
winehero 2005-10-18
  • 打赏
  • 举报
回复
在OnFirstUIAfter中写吧。。。
因为在OnFirstUiBefore中写的话,在用户选取安装目录前执行这段的话,这时的TARGETDIR显然就不是
TARGETDIR,选取目录后记得更改TARGETDIR。

你写的脚本其它部分应该问题不大。。。
winehero 2005-10-12
  • 打赏
  • 举报
回复
//假如你要写入的项为szKey

if RegDBKeyExist(szKey) < 0 then
//this key not exsit ,pls create
RegDBCreateKeyEx(szKey,"");
endif;
//在使用RegDBSetKeyValueEx赋Key值
RegDBSetKeyValueEx(szKey,szNumName,nType,szNumValue,nSize);
winehero 2005-10-12
  • 打赏
  • 举报
回复
IS的系统变量TARGETDIR就是安装路径<TARGETDIR>

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧