Per gli ambienti aziendali il PC Client IpDoor (ipdoor-concierge) è disponibile in formato MSI standard, pensato per la distribuzione centralizzata tramite strumenti di endpoint management.
Questa sezione è rivolta agli Amministratori di Sistema e agli IT Manager responsabili della distribuzione e della manutenzione centralizzata del software all'interno della rete aziendale.
| Caratteristica | Valore |
|---|---|
| Applicazione | ipdoor-concierge |
| Piattaforma | Windows 10/11 (x64) |
| Formato pacchetto | MSI (Windows Installer) |
| Tipo installazione | Per-machine, silente, senza interazione utente |
| Strumenti supportati | Microsoft Intune, SCCM, GPO, script PowerShell ufficiale |
L'applicazione include un meccanismo di aggiornamento automatico per gli utenti standard. In ambiente aziendale, per evitare conflitti e richieste di privilegi amministrativi (UAC) agli utenti, l'auto-updater deve essere disattivato centralmente tramite il Registro di Windows prima del deployment.
Configurare la seguente chiave di registro su tutte le macchine di destinazione:
| Campo | Valore |
|---|---|
| Percorso chiave | HKLM\Software\IpDoor\Concierge |
| Nome valore | UpdateMode |
| Tipo | REG_SZ |
| Dati valore | it-managed |
Quando questa chiave è presente e valorizzata come indicato, l'applicazione (versione 2.31.0 o successiva) disabilita qualsiasi controllo automatico interno dei pacchetti e delega interamente la gestione del ciclo di vita del software all'infrastruttura IT aziendale.
New-Item -Path "HKLM:\Software\IpDoor\Concierge" -Force | Out-Null
New-ItemProperty -Path "HKLM:\Software\IpDoor\Concierge" -Name "UpdateMode" -PropertyType String -Value "it-managed" -Force | Out-Null
Get-ItemProperty -Path "HKLM:\Software\IpDoor\Concierge" -Name "UpdateMode"
Valore atteso: UpdateMode : it-managed
Per ripristinare gli aggiornamenti gestiti lato utente basta rimuovere il valore:
Remove-ItemProperty -Path "HKLM:\Software\IpDoor\Concierge" -Name "UpdateMode" -ErrorAction SilentlyContinue
Il pacchetto MSI è un database dichiarativo puro: non esegue l'installazione di runtime di terze parti, per garantire la massima pulizia del deployment. I seguenti requisiti devono essere soddisfatti prima dell'installazione.
L'applicazione richiede la presenza del runtime Microsoft Visual C++ Redistributable 2015-2022 (x64).
Gestione consigliata (Intune): se si distribuisce l'app tramite Microsoft Intune, caricare il pacchetto ufficiale del VC++ Redistributable e impostarlo come Dipendenza (Dependency) di ipdoor-concierge. Intune ne verificherà la presenza e provvederà all'installazione silente automatica prima di avviare l'MSI.
Per garantire il corretto funzionamento dell'applicazione (comunicazioni, flussi video e decodifica multimediale), gli amministratori devono configurare le seguenti tre regole nel Firewall di Windows (tramite GPO, script o Endpoint Security in Intune):
| Regola | Percorso eseguibile | Direzione | Azione | Profilo |
|---|---|---|---|---|
| ipDoor Concierge | %ProgramFiles%\ipdoor-concierge\ipdoor-concierge.exe | In entrata | Consenti | Pubblico, Privato, Dominio |
| ipDoor videoprobe | %ProgramFiles%\ipdoor-concierge\executables\ffprobe.exe | In uscita | Consenti | Pubblico, Privato, Dominio |
| ipDoor videoprocessing | %ProgramFiles%\ipdoor-concierge\executables\ffmpeg.exe | In uscita | Consenti | Pubblico, Privato, Dominio |
$appRoot = Join-Path $env:ProgramFiles "ipdoor-concierge"
New-NetFirewallRule -DisplayName "ipDoor Concierge" -Direction Inbound -Action Allow -Program (Join-Path $appRoot "ipdoor-concierge.exe") -Enabled True -Profile Domain,Private,Public
New-NetFirewallRule -DisplayName "ipDoor videoprobe" -Direction Outbound -Action Allow -Program (Join-Path $appRoot "executables\ffprobe.exe") -Enabled True -Profile Domain,Private,Public
New-NetFirewallRule -DisplayName "ipDoor videoprocessing" -Direction Outbound -Action Allow -Program (Join-Path $appRoot "executables\ffmpeg.exe") -Enabled True -Profile Domain,Private,Public
Get-NetFirewallRule -DisplayName "ipDoor Concierge","ipDoor videoprobe","ipDoor videoprocessing" -ErrorAction SilentlyContinue | Remove-NetFirewallRule
Per semplificare le operazioni viene fornito uno script PowerShell ufficiale (vedere paragrafo successivo), progettato per essere eseguito centralmente (es. tramite Attività Pianificata o Intune) con privilegi di SYSTEM o Administrator.
Lo script NON comprende:
Tali requisiti sono a carico del personale IT che si occuperà dell'installazione.
Lo script gestisce in totale autonomia l'intero ciclo di vita del software:
.exe precedente, chiude l'app e la disinstalla in modo silente per evitare conflitti.latest.yml. Se rileva una nuova versione rispetto a quella locale, scarica l'MSI aggiornato e lo installa in modalità silente in background senza disturbare l'utente finale.I dati utente e le configurazioni locali salvate in %AppData% verranno totalmente mantenuti e preservati sia durante la migrazione da EXE a MSI, sia durante i successivi aggiornamenti dell'MSI.
Il seguente script ha scopo di esempio: si può utilizzare tal quale e pianificarne l'esecuzione (es. ogni 2/3 settimane) sulle macchine aziendali, oppure può essere usato come riferimento per mettere a punto la propria procedura di automazione.
NOTA IMPORTANTE: Se usi Intune/SCCM come package manager nativo, considera di distribuire l'MSI direttamente tramite la soluzione endpoint management (questo script potrebbe non servire).
Se invece usi questo script in ambiente enterprise con molte workstation:
- SCONSIGLIATO: scaricare da S3 su ogni macchina;
- CONSIGLIATO: centralizzare su un server locale.
Opzioni consigliate:
- Share UNC:
$UrlMsi = "\\server-repository\ipdoor-releases\$NOME_FILE_MSI"- Server HTTP interno: sincronizza da S3 una sola volta.
# ==============================================================================
# SCRIPT UFFICIALE IPDOOR: MIGRAZIONE EXE -> MSI E AGGIORNAMENTO AUTOMATICO VIA S3
# ==============================================================================
# CONFIGURAZIONE
$BASE_URL_S3 = "https://ipdoor-concierge-releases.s3.eu-west-1.amazonaws.com/production"
$URL_LATEST_YML = "$BASE_URL_S3/latest.yml"
$NOME_APP = "ipdoor-concierge"
$NOME_FILE_MSI = "$NOME_APP-Setup.msi"
$CartellaInstallazione = "${env:ProgramFiles}\$NOME_APP"
$PercorsoExe = "$CartellaInstallazione\$NOME_APP.exe"
$OldExeUninstaller = "$CartellaInstallazione\Uninstall $NOME_APP.exe"
# --- FASE 1: GESTIONE MIGRAZIONE (SOLO AL PRIMO AVVIO) ---
if (Test-Path $OldExeUninstaller) {
Write-Host "Rilevato installer EXE precedente. Avvio migrazione a MSI..."
Stop-Process -Name $NOME_APP -Force -ErrorAction SilentlyContinue
Start-Process -FilePath $OldExeUninstaller -ArgumentList "/S" -Wait
Write-Host "Vecchia versione EXE rimossa con successo."
}
# --- FASE 2: CONTROLLO VERSIONI VIA S3 ---
if (Test-Path $PercorsoExe) {
$VersioneInstallata = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($PercorsoExe).FileVersion
} else {
$VersioneInstallata = "0.0.0"
}
try {
$ContenutoYml = Invoke-RestMethod -Uri $URL_LATEST_YML -UseBasicParsing
# Estrae solo il numero di versione dal file YAML (es. 1.0.0)
if ($ContenutoYml -match 'version:\s*([0-9\.]+)') {
$VersioneOnline = $Matches[1]
} else {
Write-Error "Impossibile leggere il numero di versione dal file latest.yml."
exit 1
}
} catch {
Write-Error "Errore durante il recupero dei dati da S3: $_"
exit 1
}
Write-Host "Versione Locale: $VersioneInstallata"
Write-Host "Versione su S3: $VersioneOnline"
# --- FASE 3: INSTALLAZIONE O AGGIORNAMENTO MSI ---
if ([System.Version]$VersioneOnline -gt [System.Version]$VersioneInstallata) {
Write-Host "Nuova versione disponibile ($VersioneOnline). Avvio download..."
$UrlMsi = "$BASE_URL_S3/$NOME_FILE_MSI"
$NomeFileTemporaneo = "$NOME_APP-$VersioneOnline.msi"
$PathTemporaneo = Join-Path $env:TEMP $NomeFileTemporaneo
# elimina un eventuale file già presente con lo stesso nome
if (Test-Path $PathTemporaneo) { Remove-Item -Path $PathTemporaneo -Force }
try {
Start-BitsTransfer -Source $UrlMsi -Destination $PathTemporaneo -DisplayName "Scarico ipdoor-concierge" -Priority High -ErrorAction Stop
Write-Host "Download completato"
} catch {
Write-Error "Errore BITS Transfer: $_"
exit 1
}
Stop-Process -Name $NOME_APP -Force -ErrorAction SilentlyContinue
Write-Host "Esecuzione msiexec per $NomeFileTemporaneo..."
$ArgomentiMSI = "/i `"$PathTemporaneo`" /qn /norestart"
$Processo = Start-Process -FilePath "msiexec.exe" -ArgumentList $ArgomentiMSI -Wait -NoNewWindow -PassThru
if ($Processo.ExitCode -eq 0) {
Write-Host "Applicazione installata/aggiornata alla versione $VersioneOnline!"
} else {
Write-Error "Errore MSI. Codice d'uscita: $($Processo.ExitCode)"
}
Remove-Item -Path $PathTemporaneo -Force
} else {
Write-Host "L'applicazione è già aggiornata all'ultima versione."
}
Durante l'esecuzione di msiexec.exe il sistema operativo potrebbe restituire dei codici di stato. I più comuni sono:
| Codice | Significato |
|---|---|
0 | Operazione completata con successo. |
1603 | Errore irreversibile (verificare che lo script giri come SYSTEM/Administrator o che i file non siano bloccati da processi attivi). |
1641 / 3010 | Installazione riuscita, ma è richiesto un riavvio del PC per sostituire file bloccati in memoria (lo script mitiga questo scenario forzando la chiusura dell'app prima del lancio). |
Questa voce raccoglie più sotto-sezioni: scegline una per approfondire.