8
votes

WIX: Changement de manière dynamique du texte d'état pendant la personnalisation

J'ai une personnalité assez longue dans un programme d'installation WIX, et je souhaite pouvoir modifier le texte "Statut", tandis que l'opération s'exécute, pour savoir qu'il y a des progrès et de la mise à jour de son statut interne. Je sais comment définir le progressant d'une action personnalisée - mais ce que je veux, c'est de modifier de manière dynamique le texte de progression lors de la course de l'action personnalisée.


0 commentaires

3 Réponses :


11
votes

Les actions personnalisées différées peuvent appeler la fonction MSIPROCESSMessage. Vous pouvez ensuite utiliser installMessage_actionStart, installMessage_actionData et installMessage_progress pour publier des messages jusqu'à l'interface utilisateur.

Une autre possibilité serait de casser votre action personnalisée dans des actions personnalisées plus petites et d'utiliser la table de progressiste (actionText) pour décrire différentes phases d'installation. (Rendre chaque autorité de certification a une seule responsabilité.) P>

Parfois, lorsqu'une CA fonctionne trop, il est difficile de planifier des retournements correctement. P>

Obtention d'informations de contexte pour des actions personnalisées d'exécution différé P>

MSIProcessMessage fonction P>

Utiliser C # / DTF Il ressemble à quelque chose du genre: P>

    using (Record record = new Record(0))
    {
        record.SetString(0, "foo");
        session.Message(InstallMessage.ActionData, record);
    }


3 commentaires

Merci. Je crois que c'est ce que je cherchais. Mon action personnalisée est écrite en C #, avez-vous peut-être une explication pour le DTF?


Toutes les classes et membres de la DTF DOCO Référenciez les homologues de l'API MSI sous-jacents et vous pouvez les trouver à l'aide de l'onglet Rechercher dans le fichier d'aide. Je vais mettre à jour ma réponse pour fournir un échantillon. (Vous n'avez pas mentionné ce que vous programmiez l'autorité de certification.)


Merci. Fonctionne comme un charme :)



1
votes

Chris a expliqué correctement comment envoyer le message à ActionData à partir de votre CA, mais si vous utilisez InstallShield, assurez-vous de créer une étiquette sur la boîte de dialogue SETUPPROGRESS ActionData Evénement texte à celui-ci. Simplement, la création d'un événement ActionText pour une étiquette n'est pas suffisant car il n'imposera que la description de l'autorité de certification que vous créez dans la table ActionText.


0 commentaires

0
votes

La réponse ci-dessus ne fonctionne pas pour moi. Le statut n'est jamais mis à jour.

appeler directement la fonction addProgressinfo fonctionne dans mon cas. xxx


0 commentaires