WiX Отображение текста во время выполнения пользовательских действий - PullRequest
0 голосов
/ 23 мая 2019

Я хочу, чтобы в диалоговом окне установщика wix отображалось ход выполнения настраиваемого действия.

Это код настраиваемого действия, который выполняется, и я хочу записать каждую строку из:

dacServiceInstance.Message += (s, e) => MessageList += Environment.NewLine + e.Message.Message;

И отобразить элемент в текстовом поле при его выполнении:

public static bool ProcessDacPac(string connectionString, string databaseName, string dacpacName, Session session)
{
    var success = true;
    //var MessageList = new List<string>
    //{
    //    "*** Start of processing for " +  databaseName
    //};

    var MessageList = "*** Start of processing for " + databaseName;

    var dacOptions = new DacDeployOptions { BlockOnPossibleDataLoss = false };

    var dacServiceInstance = new DacServices(connectionString);
    //dacServiceInstance.ProgressChanged += (s, e) => MessageList.Add(e.Message);
    //dacServiceInstance.Message += (s, e) => MessageList.Add(e.Message.Message);

    dacServiceInstance.ProgressChanged += (s, e) => MessageList += Environment.NewLine + e.Message;
    dacServiceInstance.Message += (s, e) => MessageList += Environment.NewLine + e.Message.Message;

    try
    {
        using (var dacpac = DacPackage.Load(dacpacName))
        {
            dacServiceInstance.Deploy(dacpac, databaseName,
                upgradeExisting: false,
                options: dacOptions);
        }
    }
    catch (Exception ex)
    {
        success = false;
        //MessageList.Add(ex.Message);
        MessageList += Environment.NewLine + ex.Message;
    }

    session["MESSAGE_LIST"] = MessageList;
    //WinForms.MessageBox.Show(MessageList);
    //session.SetObjectAsJson("MessageList", MessageList);
    return success;
}

Это мой элемент управления WiX:

<Control Id="Progress" Type="Edit" X="45" Y="127" Width="160" Height="80" Property="MESSAGE_LIST" Text="[MESSAGE_LIST]">
</Control>

Я ожидаю, что результат MESSAGE_LIST будетотображается в текстовом поле по мере выполнения.

...