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

1 篇文章 0 订阅
1 篇文章 0 订阅

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

第一次遇到这种问题,刚开始以为是用户权限的问题。给本机上所有用户开了所有权限之后,问题依然存在。查询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位操作系统有关。具体我也说不清楚,总之,问题得到了解决。此为记!感谢杨果同学耐心帮我测试!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值