Files
nsis-plugin-nsjson/README_IT.md
T
2026-04-30 00:14:03 +02:00

7.3 KiB

nsJSON NSIS plug-in

Autori: Stuart 'Afrow UK' Welch, Pieter Dewachter

Data: 10 Ottobre 2024

Versione: 1.1.1.1

Plugin NSIS per il parsing, la manipolazione e la generazione di JSON (JavaScript Object Notation).

Vedi Examples\nsJSON*.

Informazioni su JSON

Vedi http://www.json.org/ per informazioni su JSON, sintassi e sequenze di escape.

Informazioni importanti

Tutte le funzioni del plug-in impostano il flag di errore NSIS in caso di errore. Per le funzioni che restituiscono un valore sullo stack, nessun elemento viene restituito se il flag di errore è stato impostato. Usare IfErrors o ${If} ${Errors} per verificare che una chiamata sia riuscita prima di fare Pop di un valore.

Il plug-in supporta tutte le sequenze di escape nei valori stringa: \r, \n, \t, \b, \f, \", \\ e \uXXXX

[NodePath], usato in questo readme, è qualsiasi lista di chiavi e indici separati da spazi (gli indici sono preceduti da /index). Per esempio:

{
    "node1": {
        "node2": false,
        "node3": [ "Stuart", 1, { "node4": "Welch", "node5": "" }, 32.5, [ 0, "test", false ] ]
    }
}

Esempi di percorsi nodo in questo JSON:

"node1" "node2"

  • Percorso per "node2" (valore: false)
  • nsJSON::Get "node1" "node2" /end

"node1" "node3" /index 0

  • Percorso per il primo elemento di "node3" (valore: "Stuart")
  • nsJSON::Get "node1" "node3" /index 0 /end

Più alberi JSON possono essere manipolati contemporaneamente. Aggiungere /tree NomeAlbero prima degli altri argomenti per specificare quale albero JSON si sta manipolando.

Lettura di file JSON

nsJSON::Set [/tree Albero] [NodePath] /file [/unicode] "percorso\input.json"

Carica il JSON dal file dato nel nodo specificato. Specificare /unicode se il file è Unicode.


nsJSON::Set [/tree Albero] /file [/unicode] "percorso\input.json"

Carica il JSON dal file dato in memoria, sovrascrivendo qualsiasi albero JSON esistente.

JSON da richieste HTTP

nsJSON::Set [/tree Albero] [NodePath] /http AlberoConfig

Esegue una richiesta HTTP e carica la risposta JSON nel nodo dato. L'AlberoConfig specifica la configurazione della richiesta in formato JSON. I valori possibili sono:

"Url": "http://..."

  • L'URL della richiesta. Obbligatorio.

"Verb": "GET"

  • Il verbo della richiesta (GET, POST, ecc.). Default: GET.

"Params": "..."

  • Parametri opzionali da aggiungere all'URL (dopo ?).

"Data": "..."

  • Dati opzionali da inviare (tipicamente con POST).

"Headers": "..."

  • Header aggiuntivi da inviare.

"Agent": "nsJSON NSIS plug-in/1.0.x.x"

  • La stringa dell'agente della richiesta.

"Decoding": false

  • Abilita la decompressione GZIP automatica.

"Async": true

  • Esegue la richiesta in modo asincrono. Usare la funzione Wait per attendere il completamento.

JSON dall'esecuzione di applicazioni console

nsJSON::Set [/tree Albero] [NodePath] /exec AlberoConfig

Esegue un'applicazione console e carica l'output nel nodo dato. I valori possibili della configurazione:

"Path": "$INSTDIR\ConsoleApp.exe"

  • Percorso all'eseguibile. Obbligatorio.

"Arguments": ...

  • Argomenti della riga di comando.

"WorkingDir": "..."

  • Directory di lavoro.

"Input": ...

  • Input da scrivere su STDIN.

"Async": true

  • Esegue in modo asincrono.

Modifica del JSON

nsJSON::Set [/tree Albero] [NodePath] /value "Valore"

Imposta il valore del nodo dato. Il valore può essere un singolo valore o codice JSON. Il nodo viene creato se non esiste.


nsJSON::Delete [/tree Albero] [NodePath] /end

Elimina l'albero o il nodo dato. /end deve essere aggiunto alla fine della lista.


nsJSON::Quote [/unicode] [/always] Valore
Pop $Var

Racchiude il valore dato tra virgolette se necessario e fa l'escape dei caratteri che lo richiedono.


nsJSON::Sort [/tree Albero] [NodePath] [/options Opzioni] /end

Ordina il nodo dato. Sommare i seguenti valori per le opzioni di ordinamento:

  1. Ordine decrescente.
  2. Ordinamento numerico.
  3. Ordinamento case-sensitive.
  4. Ordina per chiavi anziché per valori.
  5. Ordina ricorsivamente tutti i nodi nell'albero.

Lettura di valori JSON

nsJSON::Get [/tree Albero] [/noexpand] [NodePath] /end
Pop $Var

Ottiene il valore del nodo dato. /end deve essere aggiunto alla fine della lista.


nsJSON::Get [/tree Albero] /type [NodePath] /end
Pop $Var

Ottiene il tipo di valore del nodo dato: "node", "array", "string", "value" o stringa vuota se il nodo non esiste.


nsJSON::Get [/tree Albero] /keys [NodePath] /end
Pop $VarKeyCount
Pop $VarKey1
Pop $VarKeyN

Ottiene le chiavi del nodo dato.


nsJSON::Get [/tree Albero] /count [NodePath] /end
Pop $Var

Ottiene il numero di nodi figli o elementi di un array.

Generazione JSON

nsJSON::Serialize [/tree Albero] [/format]
Pop $Var

Serializza l'albero JSON corrente in $Var. Aggiungere /format per formattare l'output.


nsJSON::Serialize [/tree Albero] [/format] /file [/unicode] "percorso\output.json"

Serializza l'albero JSON corrente nel file dato.

Attesa di task asincroni

nsJSON::Wait Albero [/timeout TimeoutInMillisecondi]
Pop $Var

Verifica se il task asincrono in esecuzione nell'albero JSON dato è terminato.


⚠️ Differenze nella versione personale

Questa versione è basata sul rilascio ufficiale v1.1.1.1 da GitHub.

Nuova architettura supportata: x64 (amd64-unicode)

L'originale v1.1.1.1 supporta solo:

  • x86-ansi
  • x86-unicode

La versione personale aggiunge il supporto per:

  • amd64-unicode (x64)

Progetto Visual Studio

L'originale includeva:

  • Contrib/nsJSON/nsJSON.sln - Solution VS2012
  • Contrib/nsJSON/nsJSON.vcxproj - Progetto VS2012 (solo x86)
  • Contrib/nsJSON/ConsoleApp/ConsoleApp.vcxproj - App di test

La versione personale usa lo stesso progetto aggiornato per VS2022 con supporto x64.

File aggiunti (infrastruttura di build)

  • build_plugin.cmd - Script per compilare il plugin
  • build_plugin.py - Script Python per compilare il plugin per tutte le architetture
  • BUILD_README.md - Documentazione di compilazione
  • .gitignore - File di esclusione Git

File rimossi

I file DLL precompilati sono stati rimossi dalla distribuzione (vengono generati dalla compilazione):

  • Plugins/x86-ansi/nsJSON.dll
  • Plugins/x86-unicode/nsJSON.dll

Modifiche funzionali

Nessuna modifica funzionale rispetto all'originale. Le modifiche riguardano solo l'infrastruttura di build e il supporto x64.

Compilazione

cd nsJson
python build_plugin.py

I DLL vengono copiati in plugins/{platform}/nsJSON.dll.

Opzioni build

python build_plugin.py --config x86-unicode      # Solo un'architettura (x86-ansi|x86-unicode|amd64-unicode|all)
python build_plugin.py --toolset 2026            # Toolset specifico (2022|2026|auto)
python build_plugin.py --jobs 4                  # Numero di job MSBuild paralleli (default: CPU count)
python build_plugin.py --clean                   # Pulizia dist/ prima della build
python build_plugin.py --install-dir "C:\NSIS\Plugins"  # Copia in directory NSIS aggiuntiva
python build_plugin.py --verbose                 # Output MSBuild esteso
python build_plugin.py --version                 # Stampa versione ed esce

See README.md for the English version.