QT安装程序框架禁用Windows Apps& amp;中的“修改”按钮。特征

时间:2017-08-19 14:50:08

标签: qt installer uninstaller

我正在使用QT安装程序框架为QT windows应用程序构建Windows安装程序。我想在Windows Apps&中禁用与我的应用程序关联的“修改”按钮。功能(应用程序卸载)。

据我了解,“修改”按钮启用/禁用状态由Windows注册表项“NoModify”控制,位于:

  

“HKEY_CURRENT_USER \软件\微软\的Windows \ CurrentVersion \卸载{GUID}”

此目录中的键和值由安装程序创建。

我在installscript.qs中使用component.addElevatedOperation“GlobalConfig”或component.addOperation“Settings”来尝试修改注册表但没有成功。

有什么建议吗?

提前致谢

2 个答案:

答案 0 :(得分:0)

通过我对Windows Installer的测试,我发现要启用Windows应用和功能中的“修改”按钮,需要在注册表中的应用程序卸载密钥中填充“ModifyPath”可扩展字符串。

  

ModifyPath |由Windows Installer确定并设置。

Uninstall Registry Key - MSDN

使用Windows Installer属性阻止“添加删除程序”中的“删除”和“修复”选项时,不会创建可展开字符串ModifyPath,因此“应用程序和功能”中的修改选项不可用。

ModifyPath可扩展字符串的典型值为:

MsiExec.exe /I{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}

其中{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}是产品代码。但是我在测试中也看到,如果可扩展字符串存在且具有值,则应用和功能中可以使用修改选项

答案 1 :(得分:0)

要从Windows应用和功能的卸载程序菜单中禁用应用程序中的“修改”选项,您可以执行以下操作之一:

  1. <SupportsModify>false</SupportsModify>文件中添加新的config.xml值:
<?xml version="1.0"?>
<Installer>
    <Name>Some Application</Name>
    <Version>1.0.0</Version>
    <Title>Some Application Setup</Title>
    <Publisher>Your Company</Publisher>
    ...
    <SupportsModify>false</SupportsModify>
    ...
</Installer>
  1. 或通过调用installer.setValue(...args)方法将值“ SupportsModify”设置为false:
function Controller()
{
  if (installer.isInstaller())
  {
    // Disable button "Modify" on windows Apps & feature uninstalls entry
    installer.setValue("SupportsModify", false);
  }
}