Скрытие кнопки «Далее» с настраиваемым действием в MSI Installer - PullRequest
1 голос
/ 25 января 2012

Я пытаюсь скрыть или отключить следующую кнопку из пользовательского действия. Я искал возможные способы сделать это, но все, что я нашел, это установить переменную в моем настраиваемом действии и установить следующую кнопку, чтобы включить, когда эта переменная равна значению. Теперь я нашел учебники по сокрытию кнопки отмены. Интересно, можно ли использовать этот же метод для кнопки «Далее» (или любого другого поля в этом отношении!), Но я просто не понимаю две функции в ней. это 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;
}

Ответы [ 2 ]

1 голос
/ 25 января 2012

Обычно это делается через условия контроля .Вот несколько статей, которые могут вам помочь:

По сути, вы контролируете видимость кнопки через свойство установщика,С помощью пользовательского действия вы можете установить это свойство с помощью функции MsiSetProperty .

0 голосов
/ 25 января 2012

Это вопрос изготовления квадратного колышка, который бы подходил к квадратному отверстию. MsiProcessMessage - это средство, с помощью которого вы можете общаться с пользовательским интерфейсом Msi и заставлять его делать что-то. Например, скрыть кнопку отмены. Но чтобы сделать это, вы должны отправить ему сообщение так, как он ожидает, включая запись. Вы создаете и заполняете его упомянутыми звонками.

Трудно расшифровать способ, которым они описывают поля, но все значения для записи документированы в MsiProcessMessage .

Редактировать: Нет, вы не можете использовать этот метод для воздействия на кнопку Далее. Этот метод, использующий MsiProcessMessage, предназначен главным образом для поддержки дел во встроенном базовом интерфейсе пользователя, в котором есть только кнопка отмены.

...