2013-06-21 5 views
1

J'ai récemment développé une application en C# .NET et maintenant je dois créer la configuration correspondante. J'ai besoin d'implémenter une logique spécifique pendant la phase d'installation et pour cette raison j'ai choisi d'utiliser NSIS. En particulier, j'ai besoin d'écrire des informations dans le fichier .config de mon application. J'ai essayé d'utiliser une macro basée sur nsisXML.dll que j'ai trouvé ici: http://nsis.sourceforge.net/Talk:NsisXML_plug-in_%28by_Wizou%29[^], mais cela ne fonctionne pas!Fichier de configuration NSIS

Le compilateur ne donne pas d'erreur, mais quand je lance l'installation j'obtenir un message Windows: « Setup.exe a cessé de fonctionner - Windows vérifie pour une solution au problèm ... »

Donc je ne sais pas ce qui peut causer l'erreur !!

Si quelqu'un a une solution différente pour écrire dans un fichier .config avec NSIS, il me fera plaisir de le lire. Merci!!

+0

Utilisez-vous Unicode NSIS avec un plugin non-Unicode? – Anders

Répondre

1

Finalement, j'ai décidé d'écrire du code C# pour gérer le fichier de configuration. J'ai donc écrit un .dll en C# et ensuite je l'ai utilisé comme ReserveFile dans mon script NSIS, en utilisant le plug-in CLR NSIS (http://nsis.sourceforge.net/Call_.NET_DLL_methods_plug-in[ ^]) qui permet de méthodes d'appel dans une DLL .NET gérée. J'ai donc écrit une fonction dans le script NSIS avec le code suivant: Réduire | Copier le code

Function WriteConfig 
InitPluginsDir 
    SetOutPath "${NSISDIR}\Plugins\" 
    File "${NSISDIR}\Plugins\MyNETdll.dll" 
CLR::Call /NOUNLOAD "MyNETdll.dll" "Namespace.Class" "Method-To-Write_in-Config" 3 "Config path" "Key" "Value" 
CLR::Destroy 
FunctionEnd 

où "3" est le nombre de paramètres que la méthode accepte et les chaînes suivantes sont les paramètres eux-mêmes. De cette façon, n'importe quelle méthode écrite en C# peut être appelée à partir du script NSIS!