PREMESSA

Il backup delle librerie RealMedia necessita che vengano eseguite 3 differenti operazioni:
*
installazione sicura di RealPlayer;
* backup delle librerie;
* ripristino delle librerie.

In questa guida descriverò i passaggi ad alto livello necessari per eseguire tali operazioni. Ovviamente questi passi possono anche essere trasposti in una o più applicazioni per automatizzare il processo.
In fondo alla guida ho poi aggiunto un'appendice in NSIS che descrive come far convivere un installer per i decoder di RealNetworks con RealPlayer. In tal modo è possibile far usare l'installer senza che l'utente debba preoccuparsi di cosa ha già installato.



INSTALLAZIONE SICURA
DI REALPLAYER
TOP

1- Eseguire un backup del Registro.
I programmi per fare una cosa del genere sono diversi: quello da me usato fa parte d'una piccola suite chiamata "KMCS Deluxe System Suite".
Tutte le operazioni eseguite d'ora in avanti sul Registro andranno ovviamnete perse.

2- Installare RealPlayer.

3- Scaricare eventuali librerie aggiuntive (i.e.: quelle per la decodifica di RealAudio 1, 2 e Lossless).

4- Eseguire il backup delle librerie.

5- Visto che l'uninstaller di RealPlayer è in realtà finto (e se anche un giorno lo sistemassero non sarebbe comunque affidabile), la rimozione dei file di RealPlayer deve essere fatta manuale.
Per fortuna si tratta solo di 3 cartelle e 3 file:
%ProgramFiles%\Real
%CommonProgramFiles%\Real
%UserProfile%\%ApplicationData%\Real
%WinDir%\system32\pncrt.dll
%WinDir%\system32\pndx5016.dll
%WinDir%\system32\pndx5032.dll

6- Ripristinare il Registro.



BACKUP DLL
TOP

Le librerie effettivamente necessarie a RealMedia Splitter sono di molto inferiori a quelle che normalmente si suggerisce di conservare.
Probabilmente ciò è da imputarsi a diversi fattori: all'organizzazione delle precedenti versioni di RealPlayer, ad un (sano) eccesso di prudenza in chi stilò le prime guide ed al fatto che alcuni di questi file vengono usati per gestire lo streaming, cosa che a noi non interessa e comunque di scarsa utilità (solo Media Player Classic è in grado di gestire gli streaming RealMedia e comunque lo fa in modo abbastanza lacunoso, stando a quanto ho potuto leggere).

Premesso ciò, i file dei quali ha senso eseguire il backup sono al massimo 15, tutti contenuti nella sottocartella "Codecs". La lista di queste librerie (con alcune note) si trova in fondo alla pagina.
Il backup completo comprede invece 3 cartelle: "Codecs", "Plugins" e "Common". Le istruzioni seguenti si riferiscono proprio a quest'ultimo tipo di backup.

Qua si trovano 2 programmini, con tanto di sorgenti in NSIS, per eseguire in modo automatico sia il backup dei file essenziali che quello completo.



1- Leggere il valore predefinito della chiave:
HKCR\SOFTWARE\RealNetworks\Preferences\DT_Codecs
Questo valore corrisponde alla cartella Codecs (tipicamente: %CommonProgramFiles%\Real\Codecs).

2- Copiare Codecs da qualche parte.

3- Leggere il valore predefinito della chiave:
HKCR\SOFTWARE\RealNetworks\Preferences\DT_Plugins
Questo valore corrisponde alla cartella Plugins (tipicamente: %CommonProgramFiles%\Real\Plugins).

4- Copiare Plugins da qualche parte.

5- Leggere il valore predefinito della chiave:
HKCR\SOFTWARE\RealNetworks\Preferences\DT_Common
Questo valore corrisponde alla cartella Common (tipicamente: %CommonProgramFiles%\Real\Common).

6- Copiare Common da qualche parte.

7- Copiare da qualche parte il file:
%WinDir%\system32\pncrt.dll



RIPRISTINO DLL
TOP

1- Copiare da qualche parte la cartella Codecs.

2- Creare la chiave HKCR\SOFTWARE\RealNetworks\Preferences\DT_Codecs ed inserivi come valore predefinito la nuova path di Codecs.

3- Copiare da qualche parte la cartella Plugins.

4- Creare la chiave HKCR\SOFTWARE\RealNetworks\Preferences\DT_Plugins ed inserivi come valore predefinito la nuova path di Plugins.

5- Copiare da qualche parte la cartella Common.

6- Creare la chiave HKCR\SOFTWARE\RealNetworks\Preferences\DT_Common ed inserivi come valore predefinito la nuova path di Common.

7- Copiare pncrt.dll in %WinDir%\system32.





- APPENDICE #1 -
DLL ESSENZIALI
TOP

Questi file sono tutti contenuti in Codecs, ciò significa che le cartelle Plugins e Common possono essere totalmente ignorate.

Nonostante la dicitura "essenziali", di questi 15 file solo 6 (o 9) lo sono effetivamente. Gli altri ho preferito lasciarli per assicurare una maggiore scalabilità alla raccolta.
RealMedia Splitter non è in grado d'usare i decoder dei formati RealAudio 1, RealAudio 2, ATRAC3 e RealVideo 1 (14_4.dll, 28_8.dll, atrc.dll, drv1.dll e rv10.dll).
RealAudio 10 (raac.dll) può essere decodificato anche da CoreAAC, tant'è che RealMedia Splitter preferisce quest'ultimo filtro alla libreria RealNetworks.
I file rv20.dll, rv30.dll e rv40.dll non mi è ben chiaro a cosa servano, dato che la riproduzione funziona tranquillamente anche senza di essi.



14_4.dll
28_8.dll
atrc.dll
cook.dll
drv1.dll
drv2.dll
drvc.dll
hxltcolor.dll
raac.dll
ralf.dll
rv10.dll
rv20.dll
rv30.dll
rv40.dll
sipr.dll



- APPENDICE #2 -
CONVIVENZA FRA
REALPLAYER ED INSTALLER
TOP

Con questo codice si evita che:
* RealPlayer venga reso inutilizzabile installando i decoder RealNetworks dopo l'installazione di RealPlayer;
* RealPlayer venga reso inutilizzabile disinstallando i decoder RealNetworks dopo l'installazione di RealPlayer, prescindendo dal fatto che i decoder RealNetworks siano stati installati prima o dopo l'installazione di RealPlayer;
* rimangano degli orfani a causa delle situazione descritte nei punti precedenti.

In ogni caso non è possibile evitare che:
* rimangano degli orfani installando o disinstallando RealPlayer dopo l'installazione dei decoder RealNetworks.
(Tali orfani verranno comunque eliminati disinstallando i decoder RealNetworks).



Installazione

!define PRODUCT "RealMediaSplitter"
InstallDir "$SYSDIR"
SetOverwrite ifnewer

;Tenta di leggere leggere dove RealPlayer ha posto la cartella Codecs
;Se non trova nulla significa che RealPlayer non è installato
ReadRegStr $R0 HKCR "SOFTWARE\${PRODUCER}\Preferences\DT_Codecs" ""
StrCmp "$R0" "" No_RealPlayer

  ;Sovrascrive i decoder di RealPlayer più vecchi rispetto a quelli nell'installer
  SetOutPath "$R0"
  File /r "RealMedia\Codecs\*.*"

  ;Scrive nel Registro dove ha effettuato l'installazione
  ;Servirà per la disinstallazione
  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT}" "InstallDir" "$R0"
  SetOutPath "$INSTDIR"
  GoTo End_Switching_0

No_RealPlayer:
  ;;Pulizia generale: facoltativa ma sempre utile
  ;DeleteRegKey HKLM "SOFTWARE\RealNetworks"
  ;DeleteRegKey HKCU "SOFTWARE\RealNetworks"
  ;DeleteRegKey HKCR "SOFTWARE\RealNetworks"

  ;Installa tutte le DLL necessarie a decodificare i formati RealNetworks
  SetOutPath "$INSTDIR"
  File "pncrt.dll"
  File /r "RealMedia"
  WriteRegStr HKCR "SOFTWARE\RealNetworks\Preferences\DT_Codecs" "" "$OUTDIR\RealMedia\Codecs\"

  ;Scrive nel Registro dove ha effettuato l'installazione
  ;Servirà per la disinstallazione
  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT}" "InstallDir" "$OUTDIR\RealMedia\Codecs\"
End_Switching_0:



Disinstallazione

;Tenta di leggere leggere dove RealPlayer ha posto la cartella Common (o Plugins)
;Se non trova nulla significa che RealPlayer non è installato
ReadRegStr $R0 HKCR "SOFTWARE\RealNetworks\Preferences\DT_Common" ""
StrCmp "$R0" "" un.No_RealPlayer

  ;Legge dove RealPlayer ha posto la cartella Codecs e la confronta con quella dei decoder RealNetworks
  ;Se sono differenti vuol dire che i decoder RealNetworks possono essere rimossi senza problemi
  ReadRegStr $R0 HKCR "SOFTWARE\RealNetworks\Preferences\DT_Codecs" ""
  ReadRegStr $R1 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT}" "InstallDir"
  StrCmp "$R0" "$R1" un.End_Switching_0
    RMDir /r "$R1"
    GoTo un.End_Switching_0

un.No_RealPlayer:
  ;;Pulizia generale: facoltativa ma sempre utile
  ;ReadRegStr $R0 HKCR "SOFTWARE\RealNetworks\Preferences\DT_Codecs" ""
  ;RMDir /r "$R0"
  ;DeleteRegKey HKLM "SOFTWARE\RealNetworks"
  ;DeleteRegKey HKCU "SOFTWARE\RealNetworks"
  ;DeleteRegKey HKCR "SOFTWARE\RealNetworks"

  ;Rimuove tutte le DLL necessarie a decodificare i formati RealNetworks
  ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT}" "InstallDir"
  RMDir /r "$R0"
  DeleteRegKey HKCR "SOFTWARE\RealNetworks\Preferences\DT_Codecs"
  Delete "$SYSDIR\pncrt.dll"
un.End_Switching_0: