2010-08-06 10 views
4

J'essaie de personnaliser la boîte de dialogue standard de progression WiX (je veux qu'elle affiche ActionData). J'ai suivi Neil's guide to customising dialogs mais le problème est, le ProgressDlg original est toujours montré au lieu du mien.Comment personnaliser le dialogue de progression Wix?

Je pense que je sais pourquoi: si vous regardez le source to ProgressDlg vous pouvez voir ce bloc de code:

<InstallUISequence> 
    <Show Dialog="ProgressDlg" Before="ExecuteAction" /> 
    </InstallUISequence> 

Ainsi, plutôt que d'être publié par un autre dialogue, comme la plupart des dialogues sont, il est déclenché directement dans le cadre du InstallUISequence. Alors, comment puis-je remplacer cela?

Répondre

4

Il semble que la boîte de dialogue de progression doit être la dernière chose dans InstallUISequence avant ExecuteAction. Dans le cas contraire, étant donné que les boîtes de dialogue de progression sont non modales, elles sont masquées immédiatement.

Ma solution est donc juste pour vous assurer que ma boîte de dialogue de progression personnalisée apparaît après l'existant:

<InstallUISequence> 
    <Show Dialog="CustomProgressDlg" After="ProgressDlg" /> 
    </InstallUISequence> 
+2

Vous pouvez remplacer les références à ProgressDlg par votre propre CustomProgressDlg. Ou modifiez le ProgressDlg existant. –

+1

+1 A travaillé pour moi, merci! –

+0

InstallUISequence> Pourquoi ce code mentionné ci-dessus ne fonctionne pas? – Durgesh

1

ProgressDlg est prévu que lorsque vous faites référence. Si vous voulez le remplacer, personnalisez votre séquence de dialogue pour ne pas faire référence à ProgressDlg.

+0

n'est-ce pas parce que les Extensions WiX UI incluent une référence à ProgressDlg dans l'InstallUISequence (comme je l'ai montré dans ma question) la seule façon d'éviter de le référencer est de ne pas utiliser les Extensions UI? –

+0

Comme le post de blog de Neil le montre, vous créez un nouveau fragment qui a son propre DialogRef à ProgressDlg; il suffit de le remplacer dans votre fragment personnalisé. Tant que vous ne référencez pas ProgressDlg, sa programmation InstallUISequence ne sera pas incluse. –

+0

vous avez décrit la façon dont je pensais que cela devrait fonctionner: j'ai cloné WixUI_Adv et supprimé tous les DialogRef à ProgressDlg. J'ai fait une recherche dans mon projet pour vérifier qu'il n'y a pas d'autres références à ProgressDlg - mais ça finit dans mon MSI :-(Une chance que cela puisse être un bug dans Wix (j'utilise 3.5.1804) ? –

2

@Samuel, cela fonctionne comme Bob a dit: "Tant que vous ne référencez pas ProgressDlg" mais cette déclaration n'est pas précise. Vous devez trouver toutes les références à ProgressDlg, mais trouvez-les dans les sources WiX. Ensuite, vous devez créer votre propre version de n'importe quelle boîte de dialogue qui référence le ProgressDlg et qui est incluse dans votre configuration (utilisation directe ou indirecte!), Afin de faire référence à votre boîte de dialogue personnalisée.

J'ai essayé ceci pour résoudre le même problème. Pour utiliser par exemple. la séquence UI FeatureTree que vous auriez à créer vos propres versions des boîtes de dialogue suivantes en plus du ProgressDlg:

  • MaintenanceWelcomeDlg
  • ResumeDlg
  • WelcomeDlg

Ceci est parce qu'ils définissent un spectacle élément qui référence ProgressDlg.

Questions connexes