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.