PowerShell: installazione di GoSign Desktop per tutti gli utenti (Aggiornato)

| |

Aggiornato

Aggiornamento del 19/10/23
Uno di quegli aggiornamenti che non fanno mai bene all’umore, né il mio e né di chiunque cerchi risposta alla propria esigenza, questo perché Infocert ha cambiato le carte in tavola (e di tanto), rendendo disponibile oggi esclusivamente un file eseguibile al posto del vecchio (e decisamente migliore) MSI. Il nuovo modo di rilasciare GoSign Desktop si basa su Squirrel e consente agli sviluppatori di rilasciare agilmente gli aggiornamenti di programma, al contempo mette in difficoltà gli amministratori di sistema che intendono distribuire il software in maniera centralizzata, silente, con installazione “per macchina” e non “per singolo utente“.

Ho provato ad aprire un po’ il cofano ma non c’è granché da fare perché la scelta è stata fatta a monte (vedi commento poco più sotto). Nonostante Squirrel permetta la creazione del file MSI ma anche – banalmente, se proprio non vuoi mollarmi il file MSI – dell’installazione macchina o silente (sì, ho scritto o anziché e perché sembra che entrambe contemporaneamente non si possano avere, bisogna optare a quel punto per il file MSI per forza). Per questo motivo non ho pubblicato (e non lo farò) lo script modificato, perché seppur io riesca a prendere il pacchetto sempre più aggiornato, resta comunque il problema della visibilità a video dell’operazione e il mancato pieno controllo del rilascio degli aggiornamenti sui PC degli utenti.

Già da tempo la scelta in azienda è stata fatta e stiamo progressivamente migrando a Firma4NG sviluppato direttamente da Bit4Id, ti consiglio di fare lo stesso. Ho anche dismesso i controlli fatti automaticamente tramite repository GitHub di SWUpdates e ho dato il benvenuto a Firma4NG.

Ne ho avuto bisogno qualche tempo fa e l’ho pure spacciato un po’ tra conoscenti con la stessa necessità: uno script PowerShell per scaricare un file MSI e installarlo passando alcune opzioni da riga di comando in maniera pulita e comprensibile (in questo caso sto parlando di GoSign Desktop di Infocert, simpatico come una scimmia urlatrice in stanza e documentato quanto un ago da cercare in un pagliaio).

Nato anche grazie allo spunto trovato in una discussione su Stack Overflow, questo di seguito è lo script. Subito dopo ti spiego cosa c’è da sapere e cosa può fare per te:


<#
GSolone, 2023
Credits:
https://stackoverflow.com/a/44337588
Changes:
7/7/23- Improve: I provide for download-only capability via script with parameter -DownloadOnly (without installation).
Change: removed pause command, if I download the installation package I will proceed and notify on screen.
#>
param(
[Parameter(Mandatory=$False, HelpMessage="Download GoSign Desktop without installing")]
[switch] $DownloadOnly
)
function downloadMSI($fileURL,$filePath) {
Invoke-WebRequest -uri $fileURL -OutFile $filePath
$MSIfile = Get-ChildItem -Path $filePath -File -Filter '*.ms*'
Write-Host "MSI found: $($MSIfile)"
return $MSIfile
}
function installMSI($MSIfile) {
$checkFile = Test-Path $MSIfile -IsValid
$today = Get-Date -Format yyyyMMddTHHmmss
$logFile = '{0}-{1}.log' -f $MSIfile.fullname,$today
$MSIArguments = @(
"/i"
('"{0}"' -f $MSIfile.fullname)
"ALLUSERS=1"
"APPLICATIONFOLDER=`"$env:ProgramFiles\InfoCert\GoSign Desktop`""
"/quiet"
"/qn"
"/norestart"
"/log"
$logFile
)
if ( $checkFile -eq $True ) {
Write-Host "Installation started: `nmsiexec.exe $($MSIArguments)" -f "Yellow"
Start-Process "msiexec.exe" -ArgumentList $MSIArguments -Passthru | Wait-Process
Write-Host "Finished installation $($MSIfile)" -f "Green"
Remove-Item $MSIfile.fullname -Confirm:$false
} else {
Write-Host "File not found." -f "Red"
}
}
if (!($DownloadOnly)) {
$MSIfile = downloadMSI "https://rinnovofirma.infocert.it/gosign/download/win32/latest/" "$env:TEMP\GoSign-Desktop-installer-win32.msi"
installMSI $MSIfile
} else {
if (!(Test-Path "C:\Temp")) { New-Item "C:\Temp" -ItemType Directory }
$MSIfile = downloadMSI "https://rinnovofirma.infocert.it/gosign/download/win32/latest/" "C:\Temp\GoSign-Desktop-installer-win32.msi"
}

Ammesso tu sappia leggere il codice PowerShell (cosa non così complicata) potresti già aver capito che lo script – se lanciato senza parametri – si occuperà di andare a scaricare la versione più aggiornata del software (direttamente dall’indirizzo rinnovofirma.infocert.it/gosign/download/win32/latest) e installarla con i seguenti parametri:

  • ALLUSERS=1: forzerà il programma a installarsi per tutti gli utenti e non solo per l’utente corrente che sta lanciando l’esecuzione del file MSI.
  • APPLICATIONFOLDER=`"$env:ProgramFiles\InfoCert\GoSign Desktop`": a corredo del parametro precedente, questo forzerà l’installazione a scrivere nella cartella in C:\Program Files\InfoCert\GoSign Desktop (Program Files (x86) se il sistema operativo gira a 64 bit) così da essere utilizzabile da tutti gli utenti che utilizzano il medesimo PC.
  • /quiet, /qn e /norestart eseguiranno tutto in maniera silenziosa e bloccando eventuali necessari riavvii del sistema.
  • /log (seguito poi dalla variabile $logFile) non farà altro che scrivere un file di log in cui l’amministratore di sistema potrà sbirciare alla ricerca di eventuali errori o per capire se l’installazione è andata a buon fine vedendone ogni singolo  passaggio.

Lo script dovrà essere lanciato come amministratore locale della macchina (almeno) perché diversamente non sarebbe possibile scrivere nella cartella Program Files. Lo stesso farà dapprima partire il download del file MSI dal sito web ufficiale di InfoCert e – salvo errori – poi l’installazione.

Download Only

Lo stesso script prevede anche un parametro da riga di comando (-DownloadOnly, si tratta di uno switch) che permetterà di lanciare esclusivamente il download del software (senza necessità di ricordarsi l’indirizzo completo del sito web o di cercarlo passando per Google o soci) che verrà salvato nella cartella C:\Temp (se non esiste verrà creata al momento). L’ho fatto perché mi è utile per dare in pasto l’eseguibile all’appliance di inventario / distribuzione software (Kace).

Spero possa tornarti utile e – nel caso tu abbia dubbi – ricorda che l’area commenti è sempre a tua totale disposizione.

#KeepItSimple

Correzioni, suggerimenti? Lascia un commento nell'apposita area qui di seguito o contattami privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! ☕ :-)

L'articolo potrebbe non essere aggiornato

Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)

Condividi l'articolo con i tuoi contatti:
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

10 Commenti
Oldest
Newest Most Voted
Inline Feedbacks
View all comments