在前面的文章中提到过,我是用的是一款名叫
Inno Setup
的打包安装工具,可以打包成
windows
安装文件。
在项目收尾的时候,发现使用
Inno Setup
打包成安装文件后,双击安装文件,执行安装,在最后一步的时候,如果你勾选了
Launch 某应用
的时候会出现需要提升程序执行权限的问题,如下:
在网上查了一下,其中微软官网提到需要提升程序的操作权限即需要用管理员权限启动才没有问题,连接查看这里。
然而,我并不想每次用户启动程序的时候都需要右键程序,然后选择管理员权限执行,所以这种官方的这种方式不是我想要的。
在无意间做了这么个尝试,安装之后选择
Launch 应用
的时候会出现这个错误,当我把错误关闭掉后,然后在双击执行应用,发现并没有这个错误,那么说明这并不是
windows
的问题,而我程序也并未牵扯到需要提升权限的操作。那么只有一种可能,那就应该是我的打包软件的问题,即
Inno Setup
的问题。
于是在网上搜索怎么给
Inno Setup
安装的软件提供
启动时的管理员权限
?
发现网上还是有不少教程的,来看一下具体怎么操作。
首先你需要下载一个可以查看二进制文件的工具,因为我们需要去编辑
Inno Setup
中的二进制文件,所以需要下载
Resource Hacker
TM,连接
下载之后打开
Resource Hacker
TM,然后打开
Inno Setup
的安装目录,找到
SetupLdr.e32
文件,打开。
如果你忘了软件的具体的安装目录,可以右键该软件,查看属性,就可以看到具体的安装目录:
因为
Resource Hacker
TM 默认打开的是
.res
,
.exe
,
.dll
等格式的文件,所以第一次打开的时候,是看不到
SetupLdr.e32
文件的,所以你需要切换成所有格式的文件。
点击
File->Open
,选择
Inno Setup
的安装目录
如下,这样就能看到
SetupLdr.e32
这个文件了,然后选择打开。
打开后,找到
requestedExecutionLevel
,并将其修改为管理员权限
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
// 改为
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
最后,点击编辑,并保存
最后,你可以使用
Inno Setup
再次进行应用的打包,打包之后安装勾选
Launch 应用
,就不会再出现这个错误了。
还有一个问题待研究,为了安全考虑,一般安装的程序不会让它去获取管理员权限,否则你的计算机可能处于危险状态。
Inno Setup
既然可配置管理员权限,那么是不是也可以取消程序第一次
Launch
的时候,不需要管理员权限就能执行呢?研究之后,下片文章再讲。