2017-09-14 5 views
0

Je suis en train d'écrire un programme d'installation WiX avec une action personnalisée. J'ai lu here que Session.Log dans une action personnalisée C# ne fonctionne pas si l'action est exécutée à la suite d'un clic sur un bouton (DoAction). MSDN dit que you can use the Message Method, alors j'ai essayé avec Session.Message:Programme d'installation WiX: message du journal dans CustomAction exécuté par DoAction

var foo = new Record(1); 
foo.SetString(0, "hello world"); 
session.Message(InstallMessage.ActionData, foo); 

mais je ne peux toujours pas voir le message du journal, même lors de l'utilisation verbose = 1. Le programme d'installation est créé avec WiX Burn, il n'y a donc pas de msi séparé.

Une aide s'il vous plaît?

Répondre

1

En général, cela est un problème connu avec Windows Installer sous-jacent:

https://msdn.microsoft.com/en-us/library/windows/desktop/aa368322(v=vs.85).aspx

Il semble que, après Server 2003 la méthode du message peut fonctionner, mais honnêtement, je me suis arrêté il y a l'aide années des actions personnalisées de script il n'est pas une option pour moi. J'utilise C#/DTF qui utilise MsiProcessMessage.

La solution de contournement habituelle est de tirer parti du fait que les modifications de propriétés sont consignées. Juste définir une propriété inutilisée un tas de fois et vous avez vos données dans le journal.

+0

C'est le lien que je citais. pourriez-vous développer "J'utilise C#/DTF qui utilise MsiProcessMessage." S'il vous plaît? – peval27

+0

DTF est une fonctionnalité de WiX qui vous permet d'écrire des actions personnalisées managées. voir: http://blog.deploymentengineering.com/2008/05/deployment-tools-foundation-dtf-custom.html –

+0

La source de la classe Session est ici: https://github.com/wixtoolset/wix3/blob /develop/src/DTF/Libraries/WindowsInstaller/Session.cs Vous pouvez voir à la ligne 210 qu'ils utilisent MsiProcessMessage() –