1

インスタンス レポートに基づいて終了/終了ダイアログにメッセージを表示したい。

インストール中に何か問題が発生した場合、完了画面にエラーメッセージを表示したいのですが、そうでない場合は成功メッセージを表示します。

インスタンスを検証するカスタム アクションを呼び出しており、それに基づいて [完了] 画面で変数の値を設定しています。ただし、Finish画面では毎回デフォルトの変数値が表示されます。

下の画像の none の代わりに、動的コンテンツを表示したいと思います。

ここに画像の説明を入力

4

1 に答える 1

1

動的な使用許諾契約をスクロール可能なテキスト コントロールに表示する関数を次に示します。その一部を使用して、やりたいことを実現できる場合があります。

 extern "C" UINT __stdcall GetLicense(MSIHANDLE hInstall)
{
HRESULT hr = S_OK;
UINT er = ERROR_SUCCESS;
BYTE* pbData = NULL;
DWORD cbData = 0;
LPWSTR szValueBuf = NULL;
char szDistributorName[MAX_PATH];
PMSIHANDLE hView, hRecord;
CString szLicense;

hr = WcaInitialize(hInstall, "GetLicense");
ExitOnFailure(hr, "Failed to initialize");

WcaLog(LOGMSG_STANDARD, "Initialized.");

hr = ExtractBinary(L"License", &pbData, &cbData);
ExitOnFailure(hr, "failed to extract binary data");

hr = WcaGetProperty(L"DISTRIBUTORNAME", &szValueBuf);
ExitOnFailure(hr, "Failed to get the driver information");

wcstombs(szDistributorName, szValueBuf, 260);
szLicense = pbData;

int nRet = szLicense.Replace("[DISTRIBUTORNAME]", szDistributorName);

LPCTSTR query = _T("SELECT * FROM `Control` ")
    _T(" WHERE `Dialog_` = 'LicenseAgreementDlg' AND `Control` = 'LicenseText' ");
UINT ret = MsiDatabaseOpenView(WcaGetDatabaseHandle(), query, &hView);

if (ERROR_SUCCESS != ret)
{
    return ERROR_INSTALL_FAILURE;
}

ret = MsiViewExecute(hView, 0);

if (ERROR_SUCCESS != ret)
{
    return ERROR_INSTALL_FAILURE;
}


ret = MsiViewFetch(hView, &hRecord);

if (ERROR_SUCCESS != ret)
{
    return ERROR_INSTALL_FAILURE;
}

ret = MsiViewModify(hView, MSIMODIFY_DELETE, hRecord);

if (ERROR_SUCCESS != ret)
{
    return ERROR_INSTALL_FAILURE;
}

ret = MsiRecordSetStringA(hRecord, 10, szLicense);

if (ERROR_SUCCESS != ret)
{
    return ERROR_INSTALL_FAILURE;
}

ret = MsiViewModify(hView, MSIMODIFY_INSERT_TEMPORARY, hRecord);

if (ERROR_SUCCESS != ret)
{
    return ERROR_INSTALL_FAILURE;
}

return ERROR_SUCCESS;

LExit:
er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
return WcaFinalize(er);
}
于 2013-01-14T09:37:37.510 に答える