2017-04-21 2 views
1

Je crée un fichier MSI à l'aide de Visual Studio 2015. Je souhaite vérifier que certains fichiers existent déjà dans TARGETDIR et transmettre le résultat de la recherche à un client personnalisé action en C#. Jusqu'à présent, je crée la recherche dans la vue Conditions de lancement et définissez les propriétés en conséquence.Passage de la condition de lancement (Search Target Machine) à l'action personnalisée dans MSI

enter image description here

Ensuite, je passe le nom de la propriété Actions vue personnalisée en tant que paramètre de données personnalisées:

/CONFIG_EXISTS = "[CONFIG_EXISTS]"

Mais quand je lis la valeur dans mon habitude code d'action, sa valeur est vide, mais je m'attends à trouver un bolean, au moins sous forme de chaîne.

protected override void OnAfterInstall(IDictionary savedState){ 
    var existingConfig = Context.Parameters["CONFIG_EXISTS"]; // Always has "" as value 
    .... // Other code 

Que manque-t-il ici? Comment obtenir dans mon action personnalisée C# code le résultat de la condition de recherche?

+0

PhilDW explique pourquoi il ne fonctionne pas. Je voudrais simplement passer 'TARGETDIR' ou le chemin d'accès complet du fichier à l'action personnalisée et vérifier si le fichier existe dans l'action personnalisée elle-même. – zett42

Répondre

1

Votre recherche échoue car elle est lancée très tôt lors de l'installation, avant que TARGETDIR ne soit initialisé (et que TARGETDIR soit également modifiable par la boîte de dialogue qui propose un dossier d'installation). Vous devez donc redéfinir votre recherche en fonction des propriétés du dossier standard de Windows Installer, tels que ProgramFilesFolder, CommonFilesFolder et ainsi de suite, la liste complète ici:

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