E' possibile utilizzare codice .NET all'interno di script NSIS tramite questo plugin (maggiori informazioni a questo indirizzo).
Per utilizzarlo bisogna copiare la dll estratta dallo zip "CLR.dll" dentro la cartella di installazione di NSIS (tipicamente "C:\Program Files\NSIS\Plugins").
Realizziamo un semplice assembly (per esempio "NSISPlugin.dll") che espone un metodo PUBBLICO "GetNumber(x)" che accetta un int in ingresso e ritorna il valore moltiplicato per dieci:
1: using System;
2:
3: namespace NSISPlugin
4: {
5: public class Info
6: {
7: public Info()
8: { }
9:
10: public int GetNumber(int nr)
11: {
12: return (nr * 10);
13: }
14: }
15: }
Per richiamare il metodo e leggerne il valore di ritorno dentro lo script NSIS:
1: OutFile "MioEsempio.exe"
2:
3: Section
4:
5: InitPluginsDir
6: SetOutPath $PLUGINSDIR
7: File "NSISPlugin.dll"
8:
9: CLR::Call /NOUNLOAD "NSISPlugin.dll" "NSISPlugin.Info" "GetNumber" 1 9
10:
11: pop $0
12: MessageBox MB_OK $0
13:
14: CLR::Destroy
15:
16: SectionEnd
In questo esempio richiamo il metodo "GetNumber" passando "1" parametro del valore di 9. Lanciando il setup prodotto mi vedrò comparire una messagebox con scritto 90 (9*10).
Quindi dopo il metodo da richiamare bisogna specificare in nr. di parametri da passare e poi elencarli in sequenza.
Questo ad esempio nel caso di più parametri:
CLR::Call /NOUNLOAD "SomeAssembly.dll" "SomeNamespace.SomeClass" \
"SomeMethod" 5 "mystring1" "x" 10 15.8 false
Ovviamente questo è un esempio stupido ma interessante per interfacciarsi con NSIS.