我正在尝试隐藏或禁用自定义操作中的下一个按钮。我已经四处搜索可能的方法,但我发现只是在我的自定义操作中设置一个变量,并设置下一个按钮以在此变量等于值时启用。 我现在找到了隐藏取消按钮的教程。我想知道这个方法是否可以用于Next按钮(或任何其他字段!)但我只是不理解其中的两个函数。 这些是MsiCreateRecord()和MsiRecordSetInteger()。 任何人都可以解释创建具有设定数量的字段的记录与使用此记录隐藏取消按钮之间的链接吗?
这是微软网站上使用它的功能。
#include <windows.h>
#include <stdio.h>
#include <Shellapi.h>
#include <msi.h>
#include <Msiquery.h>
UINT __stdcall HideCancelButton(MSIHANDLE hInstall)
{
PMSIHANDLE hRecord = MsiCreateRecord(2);
if ( !hRecord)
return ERROR_INSTALL_FAILURE;
if (ERROR_SUCCESS != MsiRecordSetInteger(hRecord, 1, 2)
|| ERROR_SUCCESS != MsiRecordSetInteger(hRecord, 2, 0))
return ERROR_INSTALL_FAILURE;
MsiProcessMessage(hInstall, INSTALLMESSAGE_COMMONDATA, hRecord);
return ERROR_SUCCESS;
}
答案 0 :(得分:1)
这通常是通过control conditions完成的。以下是一些可能对您有帮助的文章:
基本上,您可以通过安装程序属性控制按钮可见性。在自定义操作中,您可以使用MsiSetProperty函数设置该属性。
答案 1 :(得分:0)
这是一个方形挂钩适合方孔的问题。 MsiProcessMessage是您与Msi UI进行通信并告诉它执行操作的方法。如隐藏取消按钮。但要做到这一点,你必须以预期的方式发送消息,其中包括一个记录。您可以使用上述调用创建并填充它。
很难解释他们描述字段的方式,但记录的值都记录在MsiProcessMessage上。
编辑:不,您无法使用此方法影响“下一步”按钮。使用MsiProcessMessage的此方法主要用于支持内置基本UI中的案例,其中仅取消按钮。