【问题标题】:Ensure Administrator privileges for Modifying/Changing an already installed MSI?确保修改/更改已安装 MSI 的管理员权限?
【发布时间】:2021-11-04 01:21:09
【问题描述】:

我正在修改一个 Wix 项目。必须为所有用户安装它并写入 HKLM。所以,在我的包中:

<Package Id="*" InstallerVersion="405" Compressed="yes" InstallScope="perMachine" 
         InstallPrivileges="elevated"
         Manufacturer="$(var.Publisher)"
         Description="$(var.ProductName) $(var.Version) Setup"  />

我还有其他可能有效或无效的检查...

类似的东西:

<CustomAction Id='IsPrivileged' Error='You must be an admin to install this product' />
<InstallExecuteSequence>
    <Custom Action='IsPrivileged' Before='AppSearch'>Not Privileged</Custom>
</InstallExecuteSequence>

我所拥有的,确保在安装或卸载时,它需要提升。但是,人们也想修改......我就遇到了问题。

当我接手时,安装程​​序将 ARPNOMODIFY 设置为禁用修改。既然能够修改就好了,我把那行注释掉了:

<!--<Property Id="ARPNOMODIFY" Value="yes" Secure="yes" />-->

所以,现在我可以“修改”或“更改”它,具体取决于它是从 Windows 中的删除程序 UI 中完成还是通过再次运行安装程序来完成。

但是,它根本不起作用。注册表项被删除,当以这种方式运行时,我永远不会收到 UAC 提示。它只是尝试运行安装程序。

我已经做了很长时间了,无法想办法让修改/更改提升。它只是继续前进并试图运行并将一切搞砸。 ISTM 应该在开始 InstallExecute 序列之前要求提升,但它从来没有这样做。

我怎样才能让它提升或要求管理员权限?

我更愿意找到提升的方法,但如果它被阻止继续,我会很高兴。但它只是想运行和管理我的安装。

【问题讨论】:

  • 我会说,我发现从非提升提示符/shell 运行时,修复也会弄乱安装。
  • 你找到解决方法了吗?面临同样的问题..

标签: wix windows-installer


【解决方案1】:

您可以通过调节 MSI 属性 RestrictedUserControl=1 来阻止来自 ARP 的修复/修改。如果设置了此属性,则意味着安装程序正在“没有”管理员权限的情况下执行。

【讨论】:

  • 有例子吗? 没有条件属性,架构也不允许在 中使用 ,所以我不清楚你建议我做什么。
  • 您可以创建一个“错误”(类型 19)自定义操作,阻止作为非提升用户继续安装。您只需根据 RestrictedUserControl=1 在 InstallUI 和 Execute 序列表中设置自定义操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-28
  • 2011-09-29
  • 2018-09-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多