install shield 导入注册表文件
来源:互联网 发布:传感器 数据融合 异步 编辑:程序博客网 时间:2024/05/21 21:36
resource tab page -> Registry Sets -> 右键 -> New Registry Sets -> 右键 -> Import Registry File 即可
帮朋友做一个安装盘,需要往注册表里面写东东,使用了一下InstallShield的注册表操作,感觉还是满强大的
首先,我要设置一下操作的注册表项都在哪个目录下,比如都在HKEY_LOCAL_MACHINE下,那我就调用下面这句话,注意,这句话一定要在所有读写注册表项之前进行,并且只调用一次即可:
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
然后,我要检查一下我要操作的注册表项存不存在,我可以调用这样一句话:
RegDBKeyExist (regDbKey)
这个方法返回值为0表示regDbKey在注册表中存在,返回值<0表示不存在。
如果不存在的话,我要创建这个项并在其中写入一下名字为Sanc的字段,并赋以初值,那么我调用这句话就行了:
RegDBSetKeyValueEx(regDbKey, "Sanc", REGDB_STRING, "10", -1)
因为我写入的是字符串值"10",所以最后一个参数为-1就可以了,如果我写入的是一个整型值或其它数值型值的话最后一个参数就要说明这个值的长短。
需要注意的是,如果相应的注册表项不存在的话这个方法会自动在注册表中创建相应的项,不用显式的调用RegDBCreateKeyEx (regDbKey, "")了。不过通用RegDBSetKeyValueEx创建的项要是想在卸载时自动卸掉的话,就必须在InstallShield IDE的Registry中注册这个项。
同样,要是更新值的话也是用这个方法。
这个方法如果返回0的话表示成功,返回<0的值表示失败(好像InstallShield的N多方法都是这样)
那么,如何获取一个值呢?用下面的方法就可以:
RegDBGetKeyValueEx(regDbKey, "Sanc", regType, regValue, regSize)
注意,这个方法中后3个参数都是输出参数,regTyep表示类型,regValue表示值,regSize表示大小,返回值的含义同样遵守上面的法则。
最后还有一点十分重要的,就是当你的程序中途退出时,不要调用abort方法,而要调用exit方法,要不前面所做的一切注册表操作都将化为乌有。原因是abort操作会执行Uninstall操作,删除前面有注册表中创建的值.
-------------------------------------------------------------------------------------------------
RegDBGetKeyValueEx
语法:RegDBGetKeyValueEx (szKey, szName, nvType, svValue, nvSize);
说明:RegDBGetKeyValueEx函数检索注册表中一个指定项下一个特定数值名的值。缺省时,InstallShield假定该项是HKEY_CLASSES_ROOT下的一个子项。你可以用RegDBSetDefaultRoot来指定另一个开关键。
RegDBGetKeyValueEx是一个通用注册表相关函数,设计为可工作于所有注册表项,包括那些由特殊注册表相关函数处理的项。
参数:
szKey
指定其值要被检索的项的名称。用一个双反斜杠来分隔子项中的不同层。
szName
指定在szKey下其值要被检索的数值的数值名。要检索项的缺省值,则传递一个空字符串。
nvType
返回下列预定义常量之一,它们标识在svValue返回的数据的类型:
请参阅15.12中该部分的说明。
svValue
返回由szKey和svName 指定的值。注意一个数值型值以一个字符串返回。
nvSize
以字节数返回在svValue返回的值的大小。
返回值:
0:表明函数成功检索该值。
< 0:表明函数未能检索该值。
注解:
一个Windows NT平台上,当检索REGDB_STRING_MULTI数据类型时,带空字符串为参数调用StrGetTokens来将多个以空字符串为中止的字符串分析到一个字符串列表。也就是,如果svValue在调用RegDBGetKeyValueEx后有多个结果字符串,StrGetTokens( listID, svValue, "")可以被使用来分析字符串并把它们放到一个由listID指向的字符串列表。
function OnFirstUIAfter()
STRING szTitle, szMsg1, szMsg2, szOption1, szOption2,svValue;
NUMBER bOpt1, bOpt2,nvSize,nvType;
begin
nvType=REGDB_STRING;
// SdShowMsg("\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\InstallShield_{5F0F1795-20A4-4DB2-9163-8166B9A6297F}",TRUE);
// Delay(1);
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
//RegDBSetKeyValueEx("\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\InstallShield_{5F0F1795-20A4-4DB2-9163-8166B9A6297F}","UninstallString",REGDB_STRING,INSTALLDIR^"Elane.installer.UnInstaller.exe",-1);
RegDBGetKeyValueEx("\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\InstallShield_{5F0F1795-20A4-4DB2-9163-8166B9A6297F}","UninstallString",nvType,svValue,nvSize);
SdShowMsg(svValue,TRUE);
Delay(20);
// SdShowMsg("",FALSE);
Disable(STATUSEX);
bOpt1 = FALSE;
bOpt2 = FALSE;
szMsg1 = SdLoadString(IFX_SDFINISH_MSG1);
SdFinishEx(szTitle, szMsg1, szMsg2, szOption1, szOption2, bOpt1, bOpt2);
end;
语法:RegDBGetKeyValueEx (szKey, szName, nvType, svValue, nvSize);
说明:RegDBGetKeyValueEx函数检索注册表中一个指定项下一个特定数值名的值。缺省时,InstallShield假定该项是HKEY_CLASSES_ROOT下的一个子项。你可以用RegDBSetDefaultRoot来指定另一个开关键。
RegDBGetKeyValueEx是一个通用注册表相关函数,设计为可工作于所有注册表项,包括那些由特殊注册表相关函数处理的项。
参数:
szKey
指定其值要被检索的项的名称。用一个双反斜杠来分隔子项中的不同层。
szName
指定在szKey下其值要被检索的数值的数值名。要检索项的缺省值,则传递一个空字符串。
nvType
返回下列预定义常量之一,它们标识在svValue返回的数据的类型:
请参阅15.12中该部分的说明。
svValue
返回由szKey和svName 指定的值。注意一个数值型值以一个字符串返回。
nvSize
以字节数返回在svValue返回的值的大小。
返回值:
0:表明函数成功检索该值。
< 0:表明函数未能检索该值。
注解:
一个Windows NT平台上,当检索REGDB_STRING_MULTI数据类型时,带空字符串为参数调用StrGetTokens来将多个以空字符串为中止的字符串分析到一个字符串列表。也就是,如果svValue在调用RegDBGetKeyValueEx后有多个结果字符串,StrGetTokens( listID, svValue, "")可以被使用来分析字符串并把它们放到一个由listID指向的字符串列表。
function OnFirstUIAfter()
STRING szTitle, szMsg1, szMsg2, szOption1, szOption2,svValue;
NUMBER bOpt1, bOpt2,nvSize,nvType;
begin
nvType=REGDB_STRING;
// SdShowMsg("\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\InstallShield_{5F0F1795-20A4-4DB2-9163-8166B9A6297F}",TRUE);
// Delay(1);
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
//RegDBSetKeyValueEx("\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\InstallShield_{5F0F1795-20A4-4DB2-9163-8166B9A6297F}","UninstallString",REGDB_STRING,INSTALLDIR^"Elane.installer.UnInstaller.exe",-1);
RegDBGetKeyValueEx("\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\InstallShield_{5F0F1795-20A4-4DB2-9163-8166B9A6297F}","UninstallString",nvType,svValue,nvSize);
SdShowMsg(svValue,TRUE);
Delay(20);
// SdShowMsg("",FALSE);
Disable(STATUSEX);
bOpt1 = FALSE;
bOpt2 = FALSE;
szMsg1 = SdLoadString(IFX_SDFINISH_MSG1);
SdFinishEx(szTitle, szMsg1, szMsg2, szOption1, szOption2, bOpt1, bOpt2);
end;
- install shield 导入注册表文件
- install shield 导入注册表文件
- Install Shield 安装文件的命令行参数
- 利用VS2012自带install-shield程序打包安装文件
- Install Shield 修改Branding
- Install Shield Lanch Readme
- Install Shield 静默安装
- Install Shield 入门教程
- Install Shield Silent Installs
- Install Shield教程
- 安装程序制作(Install Shield)
- Install Shield制作安装软件
- Install Shield 的事件 函数
- install shield 多语言版本
- Install Shield Limited Edition下载
- install shield express 10.2 如何注册ocx控件或安装字体文件
- Install Shield安装程序制作图解
- Install shield 2009 支持中文安装包
- JProfiler试用手记
- 记忆化搜索,poj1088
- 北桥 南桥 区别
- Struts2学习笔记(十三) 输入校验(上)
- WinSnmp API和Snmp API的 区别
- install shield 导入注册表文件
- 软件设计模式之装饰模式(Darren)
- JAVA内存使用--如何计算一个Java对象占用的字节数
- VMware虚拟机上ubuntu12与win7共享文件夹
- Android 导入多个第三方jar包
- 在20分钟到1个小时内找到你的人生目标
- 【记录】商店界面美化
- 深入研究Java对象的大小
- 指针与引用