Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 7 在MSI安装程序中使用自定义操作隐藏“下一步”按钮_Windows 7_Windows Installer_Installshield_Custom Action - Fatal编程技术网

Windows 7 在MSI安装程序中使用自定义操作隐藏“下一步”按钮

Windows 7 在MSI安装程序中使用自定义操作隐藏“下一步”按钮,windows-7,windows-installer,installshield,custom-action,Windows 7,Windows Installer,Installshield,Custom Action,我试图在自定义操作中隐藏或禁用“下一步”按钮。我已经到处搜索了可能的方法,但我只找到了在自定义操作中设置一个变量,并在该变量等于某个值时设置“下一步”按钮以启用它。 我现在找到了关于隐藏取消按钮的教程。我想知道下一个按钮(或任何其他相关字段)是否可以使用相同的方法,但我不理解其中的两个函数。 它们是MsiCreateRecord()和MsiRecordSetInteger()。 有人能解释一下,创建一个带有设置数量字段的记录和使用该记录隐藏“取消”按钮之间的链接在哪里吗 下面是使用它的micro

我试图在自定义操作中隐藏或禁用“下一步”按钮。我已经到处搜索了可能的方法,但我只找到了在自定义操作中设置一个变量,并在该变量等于某个值时设置“下一步”按钮以启用它。 我现在找到了关于隐藏取消按钮的教程。我想知道下一个按钮(或任何其他相关字段)是否可以使用相同的方法,但我不理解其中的两个函数。 它们是MsiCreateRecord()和MsiRecordSetInteger()。 有人能解释一下,创建一个带有设置数量字段的记录和使用该记录隐藏“取消”按钮之间的链接在哪里吗

下面是使用它的microsoft网站的功能

#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;
}
#包括
#包括
#包括
#包括
#包括
UINT标准呼叫隐藏按钮(MSI)
{
PMSIHANDLE hRecord=MsiCreateRecord(2);
如果(!hRecord)
返回错误\u安装\u失败;
if(ERROR_SUCCESS!=MsiRecordSetInteger(hRecord,1,2)
||错误_SUCCESS!=msicrecordsetinteger(hRecord,2,0))
返回错误\u安装\u失败;
MsiProcessMessage(hInstall、INSTALLMESSAGE\u COMMONDATA、hRecord);
返回错误\成功;
}

问题在于制作一个方形销钉,以适应方形孔。MsiProcessMessage是一种可以与Msi的UI通信并告诉它执行操作的方法。例如隐藏取消按钮。但要做到这一点,您必须以它期望的方式向它发送一条消息,其中包括一条记录。您可以创建并使用上面提到的调用填充它

很难破译它们描述字段的方式,但记录的值都记录在上面


编辑:否,不能使用此方法影响“下一步”按钮。此使用MsiProcessMessage的方法主要用于支持内置基本UI中的案例,其中只有一个取消按钮。

只需制作一个方形销钉以适应方形孔即可。MsiProcessMessage是一种可以与Msi的UI通信并告诉它执行操作的方法。例如隐藏取消按钮。但要做到这一点,您必须以它期望的方式向它发送一条消息,其中包括一条记录。您可以创建并使用上面提到的调用填充它

很难破译它们描述字段的方式,但记录的值都记录在上面


编辑:否,不能使用此方法影响“下一步”按钮。此使用MsiProcessMessage的方法主要用于支持内置基本UI中的案例,其中只有一个取消按钮。

这通常通过以下方式完成。以下是一些可能对您有所帮助的文章:


基本上,您可以通过安装程序属性控制按钮的可见性。通过自定义操作,您可以使用函数设置该属性。

这通常通过。以下是一些可能对您有所帮助的文章:


基本上,您可以通过安装程序属性控制按钮的可见性。通过自定义操作,您可以使用函数设置该属性。

如果是我,我假设我只是设置了一个类似HIDEBUTTON=1的属性,并在一组互斥的ControlEvents中使用该属性,以使按钮可见或不可见。我遗漏了什么吗?哎呀,我是说控制条件。:-)那么如何为基本UI设置控制条件呢?哦,我的错误不是这个问题真正要问的;我错过了关于“下一个按钮”的部分。如果是我,我假设我只是设置了一个属性,如HIDEBUTTON=1,并在一组互斥的ControlEvents中使用该属性使按钮可见或不可见。我遗漏了什么吗?哎呀,我是说控制条件。:-)那么如何为基本UI设置控制条件呢?哦,我的错误不是这个问题真正要问的;我错过了关于“下一步”按钮的部分。值得注意的是,通过MsiSetProperty设置属性不会触发对控制条件的重新评估。解决此问题的一种方法是,让另一个set property操作触发相同的控件事件设置属性(再次,或从临时设置)。值得注意的是,通过MsiSetProperty设置属性不会触发对控件条件的重新评估。解决此问题的一种方法是,由设置属性的同一控制事件触发另一个“设置属性”操作(再次,或从临时设置)。