windows - Inno 安装程序 : Uninstall without administrator privilege

标签 windows inno-setup uninstallation

使用 Inno Setup,我需要管理员用户安装的软件可以被默认用户卸载。

参数PrivilegesRequired最低,但问题依旧。

我在一些机器上进行了测试(它们都是 Windows 7),在一些机器上我可以使用默认用户卸载,但还有一些机器不允许我卸载并请求管理员用户。

我没有在问题和互联网搜索中找到规律。

安装文件夹为C:\;

我没有使用 [Registry] 部分,[Dirs] 部分中的所有参数都使用了 Permissions: users-modify

最佳答案

有几点需要考虑:

  1. 通常,安装文件夹是 %ProgramFiles% 或 %ProgramFiles(x86)%,这是一个受操作系统保护的文件夹。要绕过此保护,安装程序必须更改安装文件夹的权限以允许任何人删除。

    [Dirs]部分,您可以使用 Permissions:users-modify(如果需要甚至更宽松)。

  2. 类似于 [Registry]部分。

  3. InnoSetup 使用名为 unins000.exe 的文件进行卸载。此文件包含一个 list ,默认情况下请求特权 asInvoker。据我所知,这不会随 PrivilegesRequired 设置而改变。到目前为止,asInvoker 应该没问题。请密切注意它,以防新版本的 InnoSetup 将其设置为更高的值。


对于发现此内容但未使用 InnoSetup 的其他访问者:

如果您没有在安装程序中嵌入 list ,Windows 将使用 heuristics for installer detection (Microsoft, .pptx) .如果试探法得出肯定的结果,Windows 将自动请求管理员提升。因此,使用 list 并请求 asInvoker 权限。

关于windows - Inno 安装程序 : Uninstall without administrator privilege,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33155666/

相关文章:

windows - Jenkins Windows Master 连接到 Slave Mac OSX

delphi - 如何使用 INNO 安装程序检测现有的 IIS 安装?

wix - 卸载期间 WIX 中的自定义操作

windows - 为什么我的 Qt 4.5 应用程序在 Windows 下打开一个控制台窗口?

.net - 如何在模拟 Windows 服务时调用 net.pipe(命名管道)WCF 服务

mongodb - Inno Setup 安装先决条件

exec - Shellexec vs Exec vs Shellexec 我的批处理文件

linux - 卸载并重新安装 Windows 8 操作系统

android - 如何从/system/app卸载自己的应用程序?

c++ - 如何在 Windows 中没有控制台窗口的情况下从 C++ 应用程序中删除文件?