J'ai un projet InstallShield MSI. Lorsque je passe un MSIHANDLE d'une action personnalisée InstallScript à un assembly managé initialisé via DotNetCoCreateObject(), la valeur reçue dans mon code managé est -2.MSI Log Debug Log Sink
Est-ce que quelqu'un sait s'il est possible d'accéder à un MSIHANDLE à partir d'une action personnalisée InstallScript qui appelle du code managé via DotNetCoCreateObject()? Je souhaite enregistrer mes résultats d'action personnalisés dans le même fichier journal que le reste de l'installation. J'utilise InstallShield 2010, Windows Installer 4.5 et .Net 3.5.
Une autre chose à garder à l'esprit est que cela ne fonctionne que si le CustomAction n'a pas été appelé à partir d'un événement de contrôle sur un événement DoAction. J'ai une action personnalisée qui utilise cette approche pour écrire un message dans le journal. Pour tester cela, j'ai attaché l'action à une pression sur un bouton dans l'interface utilisateur et aussi comme une action dans InstallExecuteSequence. L'action attachée à l'interface utilisateur n'a pas consigné l'instruction, tandis que lorsque la même action a été exécutée dans le cadre de la commande ExecuteSequence, elle est entrée dans le journal. – ksun
Apparemment, cela est dû au fait que MsiProcessMessage ne fonctionne pas à partir d'un événement de contrôle DoAction. Un moyen de contourner cela est de définir une propriété avec le message que vous souhaitez vous connecter. – ksun
Je reçois ci-dessous erreur dans le journal MSI après l'ajout du code ci-dessus ----- Une exception a été levée par la cible d'une invocation. ---> System.IO.FileNotFoundException: Impossible de charger le fichier ou l'assembly 'InstallShield.Interop.Msi, Version = 23.0.0.511, Culture = neutre, PublicKeyToken = null' ou l'une de ses dépendances. Le système ne peut pas trouver le fichier spécifié. ---- J'ai ajouté cette DLL à mon projet et je peux voir dans le répertoire de sortie mais Comment charger InstallShield.Interop.Msi dll dans l'installateur? – Santhosh