使用innosetup制作安装包需要注意的问题

很久没写了,昨天用户反映一个问题。管理员用户安装软件之后,换用户登录,该软件无法使用,报空指针异常。检查源代码,发现出现空指针异常的地方需要访问注册表来获取软件安装目录。

第一次遇到这种问题,刚开始以为是用户权限的问题。给本机上所有用户开了所有权限之后,问题依然存在。查询inno setup相关打包脚本。最终发现问题出在

 [registry]
Root:HKCU;Subkey:SOFTW\XXX;ValueType: string; ValueName:XXXXX;ValueData:{app};Flags: uninsdeletevalue

参数

说明

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

HKCU对应的是CURRENT USER,因此只对当前用户有效。改为:HKLM后重新打包。安装软件后发现在HKEY_LOCAL_MACHINE->SOFTWARE下面找不到XXX,继续查找原因。发现这个XXX写在了HKEY_LOCAL_MACHINE->SOFTWARE->WOW6432Node->XXX里。这个和64位操作系统或32位操作系统有关。具体我也说不清楚,总之,问题得到了解决。此为记!感谢杨果同学耐心帮我测试!

你可能感兴趣的:(java,Inno,setup,注册表,java,inno,setup,注册表)