我正在使用QT安装程序框架为QT windows应用程序构建Windows安装程序。我想在Windows Apps&中禁用与我的应用程序关联的“修改”按钮。功能(应用程序卸载)。
据我了解,“修改”按钮启用/禁用状态由Windows注册表项“NoModify”控制,位于:
“HKEY_CURRENT_USER \软件\微软\的Windows \ CurrentVersion \卸载{GUID}”
此目录中的键和值由安装程序创建。
我在installscript.qs中使用component.addElevatedOperation“GlobalConfig”或component.addOperation“Settings”来尝试修改注册表但没有成功。
有什么建议吗?
提前致谢
答案 0 :(得分:0)
通过我对Windows Installer的测试,我发现要启用Windows应用和功能中的“修改”按钮,需要在注册表中的应用程序卸载密钥中填充“ModifyPath”可扩展字符串。
ModifyPath |由Windows Installer确定并设置。
使用Windows Installer属性阻止“添加删除程序”中的“删除”和“修复”选项时,不会创建可展开字符串ModifyPath,因此“应用程序和功能”中的修改选项不可用。
ModifyPath可扩展字符串的典型值为:
MsiExec.exe /I{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
其中{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}是产品代码。但是我在测试中也看到,如果可扩展字符串存在且具有值,则应用和功能中可以使用修改选项
答案 1 :(得分:0)
要从Windows应用和功能的卸载程序菜单中禁用应用程序中的“修改”选项,您可以执行以下操作之一:
<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>
installer.setValue(...args)
方法将值“ SupportsModify”设置为false:function Controller()
{
if (installer.isInstaller())
{
// Disable button "Modify" on windows Apps & feature uninstalls entry
installer.setValue("SupportsModify", false);
}
}