私はMSSQLの前提条件を備えたプロジェクトを持っています。これまで、SQL はハードコードされたインスタンス名でインストールしていました。ここで、インストール プロセス中にユーザーがこの名前をカスタマイズして機能を作成したいと考えています。
これは私がやったことです:
ユーザーからSQLインスタンスの名前を取得するための編集コントロールを備えた新しいダイアログウィンドウを作成しました。ユーザーが「次へ」ボタンをクリックすると、インストール プロセスが開始されます (インターネットから SQL インストールをダウンロードし、サイレント インストールを開始します)。ユーザーにフィードバックを提供したいので、「SQL をインストールしています」などのテキスト コントロールを更新する必要があります。アクションから UI を更新する方法を見つけようとしましたが、成功しませんでした。
これが私の解決策です:
空の Text プロパティを持つ Text コントロールを配置しました。サブスクリプション タブ (このテキスト コントロール) で、イベント ActionData と Attribute Text を選択しました。私の行動では、次のようなテキストを送信しようとしました:
hRecActionData = MsiCreateRecord(1);
if( hRecActionData = NULL )then
MessageBox( "Failed to create record.", SEVERE);
endif;
nRes = MsiRecordSetString( hRecActionData, 1,"Instaling SQL..." );
if( nRes != ERROR_SUCCESS )then
MessageBox( "SetString failed", SEVERE );
endif;
nRes = MsiProcessMessage( hMSI, INSTALLMESSAGE_ACTIONDATA, hRecActionData );
if( nRes != ERROR_SUCCESS )then
MessageBox( "ProcessMessage failed", SEVERE );
endif;
コードはエラーなしで実行されましたが、テキストは更新されませんでした。
私の方法は良いですか、それともシナリオで他のアプローチを使用する必要がありますか? コードが機能しないのはなぜですか?