使用Inno-Setup,我需要默认用户卸载管理员用户安装的软件。
参数PrivilegesRequired最低,但问题仍然存在。
我在一些机器上进行了测试(所有这些都是Windows 7),有些我可以使用默认用户卸载,但还有一些机器不允许我卸载并请求管理员用户。
我没有在问题和互联网搜索中找出模式。
安装文件夹是C:\;
我没有使用[Registry]部分,[Dirs]部分中的所有参数都使用Permissions:users-modify
有几件事需要考虑:
Permissions:users-modify
(如果需要甚至更宽松)。unins000.exe
的文件进行卸载。此文件包含一个清单,默认情况下请求权限asInvoker
。据我所知,这不会随着PrivilegesRequired
setting而改变。到目前为止,asInvoker
应该没问题。如果新版本的InnoSetup将它设置得更高,请密切关注它。对于其他访问者发现此而不使用InnoSetup:
如果您没有在安装程序中嵌入清单,Windows将使用heuristics for installer detection (Microsoft, .pptx)。如果启发式结果为肯定结果,Windows将自动请求管理员提升。因此,使用清单并请求asInvoker
权限。
如果安装程序是使用管理员或高级用户权限运行的,则Inno Setup卸载程序会请求权限提升(无论是否需要使用PrivilegesRequired
显式安装)。
该信息存储在unins000.dat
的字节14C(十六进制)/ 322(十进制)中。
它是位掩码,其中位1(0x01)表示管理员权限,位7(0x40)表示高级用户权限[已废弃]。
因此,如果您以管理员/超级用户身份安装应用程序,即使安装程序具有PrivilegesRequired=lowest
,卸载程序也会请求权限提升以获得相同的权限。检查unins000.dat
中的旗帜,看看是否是这种情况。