innosetup如何往注册表写入多条
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了innosetup如何往注册表写入多条相关的知识,希望对你有一定的参考价值。
有些程序需要随系统启动,或者需要建立某些文件关联等问题,这些都是通过在安装程序中对注册表进行操作的结果。Inno Setup中通过[registry]段实现对注册表的操作。本段说明:
参数列表:
参数
说明
Root
根键。必须是下列中的一个:
HKCR (HKEY_CLASSES_ROOT)
HKCU (HKEY_CURRENT_USER)
HKLM (HKEY_LOCAL_MACHINE)
HKU (HKEY_USERS)
HKCC (HKEY_CURRENT_CONFIG)
Subkey
子键名,可以包含常量
ValueType
值类型,必须是下列中的一个:
none
string
expandsz
multisz
dword
binary
如果指定了none (默认设置),安装程序将创建一个没有键值的键,在这种情况下,ValueName 和ValueData 参数将被忽略。
ValueName
要创建的值名,可以包含常量,如果是空白的,将写入到“默认”值
ValueData
值的数据
Permissions
指定登录注册表键ACL (访问控制列表) 的附加权限,该参数只在Windows 2000 或更高版本中有效,可用的参数是full、modify和read
Flags
是额外选项设置。多个选项可以使用空格隔开。支持下面的选项:
createvalueifdoesntexist
deletekey
deletevalue
dontcreatekey
noerror
preservestringtype
uninsclearvalue
uninsdeletekey
uninsdeletekeyifempty
uninsdeletevalue
下面的例子将会使得安装程序在操作系统启动后自动运行。
[setup]
;全局设置,本段必须
AppName=Test
AppVerName=TEST
DefaultDirName="E:TEST"
AppVersion=1.0
Compression=lzma2/max
ShowLanguageDialog=yes
[components]
Name: main; Description:"主程序(必选)";Types:full compact custom;Flags: fixed
Name: data; Description:"数据文件";Types:full
Name: help;Description:"帮助文件";Types:full compact
[files]
Source: "F:desktop estipmsg.exe"; DestDir: "app";Components:main
Source: "F:desktop estin.dat"; DestDir: "app";Components:data
Source: "F:desktop esthelp.chm"; DestDir: "app" ;Components:help
Source: "F:desktop est eadme.txt"; DestDir: "app";components:help;Flags:isreadme
[registry]
;本段处理程序在注册表中的键值
Root:HKLM;Subkey:SOFTWAREMicrosoftWindowsCurrentVersionRun;ValueType: string; ValueName:TEST;ValueData:appipmsg.exe;Flags: uninsdeletevalue
一路Next到底,安装完成后可以检查注册表:
Inno Setup入门(十)——操作注册表 - Castor - 趁年轻,多折腾~~
确实添加到注册表中去了,通过金山卫士也证实了这一点:
Inno Setup入门(十)——操作注册表 - Castor - 趁年轻,多折腾~~
由于使用的标志位是uninsdeletevalue,所以卸载软件将会自动删除该值,如果使用uninsdeletekey的话,该键下的其他值都会被删除,这不是一个很好的方法,除非你确定使用的是自己的专用键,否则不推荐使用。 参考技术A innosetup如何往注册表写入多条使用inno setup 操作注册表无非就是写入、查询、删除
//查询path,放入变量oldPath中
RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'path', oldPath);
//写入字符xxx到环境变量path中,当然,xxx既可以是单纯的字符串,也可以是字符串变量
RegWriteStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'path', ‘xxx’);
//删除环境变量path
RegDeleteValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment','path');
用Java连接Oracle ,可以用Java往Oracle写入数据,但是用sql往Oracle插入数据时,关闭了再打开,数据消失
但用Java插入的数据就不会消失,是什么问题呢? (没有财富了)
我的代码是这样的,麻烦各位大神帮忙看一下
try
conn=DriverManager.getConnection(dburl,dbuser,password);
sql=conn.createStatement();
sql.executeUpdate("INSERT INTO teacher values('2009307','张小小','男','ABCD','623371','dfds')");
conn.close();
sql.close();
catch(SQLException e)System.out.print(e);
SQL%rowcount --用户成功提取数据的行数
示例:向表中插入一行数据,询问是否插入成功.
declare
iCount int:=0;
begin
insert into place values(2,'beijing');
DBMS_output.put_line('游标所影响的行数:'||SQL%rowcount);
if SQL%NotFount then
DBMS_output.put_line('NotFount为真);
else
DBMS_output.put_line('NofFount为假');
end if;
if SQL%Fount then
DBMS_output.put_line('Fount为真);
else
DBMS_output.put_line('Fount为假');
end if;
if SQL%isopen then
DBMS_output.put_line('isOpen为真);
else
DBMS_output.put_line('isOpen为假');
end if;
isCount:=SQL%rowcount;
DBMS_output.put_line('影响了'||isCount||'行');
end; 参考技术A 你connection的setautocommit是不是设了false
执行完语句之后加上con.commit();
或者sql语句改改
begin
sqlStr ......
commit ;
end ; 参考技术B 估计是你语句最后没有加入commit; 没有提交的缘故吧 参考技术C 就是没用自动提交,也没有手动提交
conn.commit();
sql.close();
conn.close();
改成这样就可以,另,建议先管Statement再关Connection,否则关Statement时候可能会报错 参考技术D 通过编程语言去连接数据库(以java为例),接口有jdbc或hibernate,会自动提交
如果是用jdbc,在weblogic或was中会有缓存池的存在。
而使用hibernate框架,其也自带2级缓存机制。
而sql在使用pl/sql或toad去执行sql后,更新的数据只是会在redo里有记录,正不会真实提交到undo中,只有commit之后提交才可 第5个回答 2010-08-28 用sql往Oracle插入数据时,默认不是提交的,你需要手动提交。
比如执行sql后你需要输入 commit 进行提交
再提一点,你这段代码也太水了
try
conn=DriverManager.getConnection(dburl,dbuser,password);
sql=conn.createStatement();
sql.executeUpdate("INSERT INTO teacher values('2009307','张小小','男','ABCD','623371','dfds')");
conn.close();
sql.close();
catch(SQLException e)System.out.print(e);
1、将关闭语句放到finally里面去
2、关闭顺序应该是先关闭 statement,在关闭conn,先打开的后关,后打开的先关,就跟关门一样。
以上是关于innosetup如何往注册表写入多条的主要内容,如果未能解决你的问题,请参考以下文章