USMT – Ułatw Sobie Migrację

Ostatnio zmuszony byłem do zmigrowania kilku maszyn do systemu Windows 7. Z racji, iż ostatnio głośno się zrobiło o USMT postanowiłem to sprawdzić i protestować w warunkach bojowych. Zdziwiłem się przy okazji, gdyż tak naprawdę USMT wcale nie jest jakimś nowym rozwiązaniem. Obecnie dostępna jest już wersja 4.0 (w pakiecie WAIK 2.0) obsługująca migrację do Windows 7, natomiast pierwsze wersje USMT służyły do przenoszenia ustawień maszyn z Windows 95, 98 czy NT4.0 do Windows 2000 Professional. Aż dziw bierze, że wcześniej o tym nie słyszałem – wstyd i hańba…
By się poprawić, to do celów testowo/edukacyjnych zaprezentuję sposób przeniesienia ustawień użytkownika i aplikacji z systemu Windows XP do systemu Windows 7. W moim przypadku wykorzystywałem migrację offline z wykorzystaniem dysku zewnętrznego dlatego również i tu zaprezentuję tą metodę.

Gwoli wstępu jednak zacytuję kilka prawd wyczytanych w „Best Practices” dotyczących USMT:
• Upewnij się czy aplikacje są zainstalowane przed przystąpieniem do ładowania ustawień,
• Nie jest wskazane łącznie MigUser oraz MigDocs, może to zduplikować pliki,
• Zamknij wszystkie zbędne aplikacje przed rozpoczęciem skanowania oraz ładowania ustawień,
• Najlepiej przenieść wszystkie dokumenty z niestandardowych lokalizacji do katalogu MojeDokumenty,
• Przed migracją sprawdź czy na dysku nie ma błędów – Chkdsk, oraz czy nie ma wirusów.

Opis środowiska:

Maszyna źródłowa: Maszyna docelowa:
Windows XP Professional
Office 2003 Professional
IE 8.0
Mozilla Firefox 3.6
Skype 4.2
Gadu-Gadu 10
Dokumenty trzymane w:
Moje dokumenty, Pulpit, C:\Dokumenty
Windows 7 Enterprise
Office 2007 Pro Plus
IE 8.0
Mozilla Firefox 3.6
Skype 4.2
Gadu-Gadu 10

Przed rozpoczęciem migracji kopiujemy katalog UMST z pakietu WAIK na maszynę źródłową i uruchamiamy polecenie wygenerowania konfiguracji skanowania. Pozwoli to na przeanalizowanie czy wszystkie elementy jakie chcemy zmigrować będą ujęte oraz na ewentualne wyłączenie tych zbędnych.

scanstate <panametry>
scanstate /genconfig:"D:\Config.xml" /i:"C:\USMT\x86\MigUser.xml" /i:"C:\USMT\x86\MigApp.xml" /l:"C:\USMT\logs\GenConfig.log" /o

Przydatne parametry:
/genconfig
– wygeneruj plik z ustawieniami migracji
/i:<lokalizacja pliku xml> – plik z ustawieniami migracji dla poszczególnych przebiegów:
     MigUser.xml – migracja ustawień użytkownika
     MigApp.xml – migracja ustawień aplikacji
     MigDocs.xml – migracja dokumentów
/l<lokalizacja pliku logów> – logowanie zdarzeń
/o – nadpisywanie lokalizacji docelowej

Po wygenerowaniu pliku konfiguracji otwieramy go i sprawdzamy czy wszystko zostało uwzględnione.

<Applications> 
    <component displayname="Mozilla Firefox" migrate="yes" ID="http://www.microsoft.com/migration/1.0/migxmlext/migapp/mozilla firefox/settings"/> 
    <component displayname="Microsoft Office 2003" migrate="yes" ID="http://www.microsoft.com/migration/1.0/migxmlext/migapp/microsoft office 2003/container"> 
      <component displayname="Microsoft Office Access 2003" migrate="yes" ID="http://www.microsoft.com/migration/1.0/migxmlext/migapp/microsoft office 2003/container/microsoft office access 2003/settings"/> 
      <component displayname="Microsoft Office Word 2003" migrate="yes" ID="http://www.microsoft.com/migration/1.0/migxmlext/migapp/microsoft office 2003/container/microsoft office word 2003/settings"/> 
      <component displayname="Microsoft Office Publisher 2003" migrate="yes" ID="http://www.microsoft.com/migration/1.0/migxmlext/migapp/microsoft office 2003/container/microsoft office publisher 2003/settings"/> 
      <component displayname="Microsoft Office Excel 2003" migrate="yes" ID="http://www.microsoft.com/migration/1.0/migxmlext/migapp/microsoft office 2003/container/microsoft office excel 2003/settings"/> 
      <component displayname="Office 2003 Common Settings" migrate="yes" ID="http://www.microsoft.com/migration/1.0/migxmlext/migapp/microsoft office 2003/container/office 2003 common settings/settings"/> 
      <component displayname="Microsoft Office SmartTags" migrate="yes" ID="http://www.microsoft.com/migration/1.0/migxmlext/migapp/microsoft office 2003/container/microsoft office smarttags/container"> 
        <component displayname="Microsoft Lists SmartTags" migrate="yes" ID="http://www.microsoft.com/migration/1.0/migxmlext/migapp/microsoft office 2003/container/microsoft office smarttags/container/microsoft lists smarttags/settings"/> 
        <component displayname="Microsoft Place SmartTags" migrate="yes" ID="http://www.microsoft.com/migration/1.0/migxmlext/migapp/microsoft office 2003/container/microsoft office smarttags/container/microsoft place smarttags/settings"/> 
      </component> 
      <component displayname="Microsoft Office Outlook 2003" migrate="yes" ID="http://www.microsoft.com/migration/1.0/migxmlext/migapp/microsoft office 2003/container/microsoft office outlook 2003/settings"/> 
      <component displayname="Microsoft Office PowerPoint 2003" migrate="yes" ID="http://www.microsoft.com/migration/1.0/migxmlext/migapp/microsoft office 2003/container/microsoft office powerpoint 2003/settings"/> 
    </component> 
  </Applications> 
  <Documents> 
    <component displayname="My Pictures" migrate="yes" ID="http://www.microsoft.com/migration/1.0/migxmlext/miguser/my pictures/data"/> 
    <component displayname="My Documents" migrate="yes" ID="http://www.microsoft.com/migration/1.0/migxmlext/miguser/my documents/data"/> 
    <component displayname="Desktop" migrate="yes" ID="http://www.microsoft.com/migration/1.0/migxmlext/miguser/desktop/settings"/> 
    <component displayname="Shared Documents" migrate="yes" ID="http://www.microsoft.com/migration/1.0/migxmlext/miguser/shared documents/data"/> 
    <component displayname="User Data" migrate="yes" ID="http://www.microsoft.com/migration/1.0/migxmlext/miguser/user data/data"/> 
    <component displayname="Shared Desktop" migrate="yes" ID="http://www.microsoft.com/migration/1.0/migxmlext/miguser/shared desktop/settings"/> 
  </Documents>

Z wycinka pliku Config.xml możemy wywnioskować, iż brakuje ustawień Skypa i Gadu-Gadu oraz niestandardowego katalogu z dokumentami C:\Dokumenty.
Co w takim przypadku należy zrobić ?? Mianowicie musimy zmodyfikować plik odpowiedzialny za skanowanie konkretnego przebiegu – u nas będzie to MigApp.xml oraz MigUser.xml, gdyż takie przebiegi wykorzystujemy.

Przyczynę braku Skypa można łatwo zauważyć i naprawić. Problem występuje w gałęzi detect, gdzie znajduje się element sprawdzający wersję aplikacji. USMT4.0 posiada ustawienia dla Skype 3.*, niestety obecnie na ryku jest dostępna wersja 4.*. Jeżeli chodzi o ustawienia to w obu nie różnią się zbyt mocno dlatego wystarczy zmienić wersję i powinno ruszyć przy następnym skanowaniu:

<detects> 
    <detect> 
        <condition>MigXmlHelper.DoesFileVersionMatch("%SkypeExe%","ProductVersion","4.*")</condition> 
    </detect> 
</detects>

Gorzej wygląda sprawa z nietypowymi aplikacjami jakimi jest np. Gadu-Gadu, otóż nam brakuje wpisów odpowiadających za zmigrowanie tych ustawień. Nie mniej jednak nic nie szkodzi nam na przeszkodzie, by samemu dopisać taką konfigurację wzorując się np. na innej aplikacji. Musimy tylko znać gdzie są zapisywane ustawienia i w jaki sposób je przenieść na nową maszynę. W przypadku Gadu-Gadu 10 wystarczy przenieść odpowiedni katalog z ustawieniami z folderu użytkownika. Całość konfiguracji możemy zawrzeć w poniższym kodzie:

<component type="Application"> 
  <displayName>Gadu-Gadu 10 </displayName> 
  <role role="Settings"> 
    <detects> 
      <detect> 
        <condition>MigXmlHelper.DoesFileVersionMatch("%CSIDL_PROGRAM_FILESX86%\Gadu-Gadu 10\gg.exe","ProductVersion","10,*")</condition> 
      </detect> 
    </detects> 
    <rules context="User"> 
      <include> 
        <objectSet> 
          <pattern type="File">%CSIDL_APPDATA%\Gadu-Gadu 10\* [*]</pattern> 
        </objectSet> 
      </include> 
    </rules> 
  </role> 
</component>

Możliwe elementy do wykorzystania:
Nazwa aplikacji

<displayName>mojaApp</displayName>

Zmienna ze ścieżka do pliku wykonywalnego

<variable name="myExePath"> 
  <script>MigXmlHelper.GetStringContent("Registry","lokalizacja klucza z wartością zawierającą ścieżkę do pliku exe aplikacji [nazwa wartość]")</script> 
</variable

Wykrywanie odpowiedniej wersji

<detects> 
  <detect> 
    <condition>MigXmlHelper.DoesFileVersionMatch("%myExePath%","ProductVersion","1.*")</condition> 
  </detect> 
</detects>

pliki i klucze rejestru z ustawieniami:
include – zawrzyj w migracji,
exclude – pomiń przy migracji,
destinationCleanup – usuń obiekty przed migracją np. pliki tymczasowe

<include> 
  <objectSet> 
    <pattern type="Registry">Ścieżka do klucza rejestru z ustawieniami\* [filtr nazw wartości]</pattern> 
    <pattern type="File">Ścieżka do katalogu z ustawieniami\* [filtr nazw plików i rozszerzeń]</pattern> 
  </objectSet> 
</include>

Kolejnym plikiem jakiemu się przyjrzymy to MigUser.xml. Standardowo zawiera konfigurację dotyczącą migracji ustawień profilu. By dodać nasz nietypowy katalog z dokumentami C:\Dokumenty musimy go zmodyfikować poprzez dodanie własnej konfiguracji. I znów jak w poprzednim przypadku możemy się wzorować na ustawieniach innych folderów użytkownika. Do celów prezentacji przyjmijmy, iż chcemy przenieść wszystkie pliki za wyjątkiem plików mp3. Poniżej przedstawiam gotową konfigurację w najprostszej formie:

<component type="Documents" context="User"> 
  <displayName>Moje dane</displayName> 
  <paths> 
    <path type="File">C:\Dokumenty</path> 
  </paths> 
  <role role="Data"> 
    <detects> 
      <detect> 
        <condition>MigXmlHelper.DoesObjectExist("File","C:\Dokumenty")</condition> 
      </detect> 
    </detects> 
    <rules> 
      <include> 
        <objectSet> 
          <pattern type="File">C:\Dokumenty\* [*]</pattern> 
        </objectSet> 
      </include> 
      <exclude> 
        <objectSet> 
          <pattern type="File">C:\Dokumenty\* [*.mp3]</pattern> 
        </objectSet> 
      </exclude> 
    </rules> 
  </role> 
</component>

Jak widzimy możliwości mamy ogromne, potrzebny jest tylko czas i chęci do zabawy.
Gdy już powiadamy poprawny plik konfiguracyjny możemy rozpocząć samą migrację danych:

Scanstate <lokalizacja pliku migracji> <parametry>
scanstate "D:\MigFiles" /o /vsc /efs:decryptcopy /i:"C:\USMT\x86\MigUser.xml" /i:"C:\USMT\x86\MigApp.xml" /config:"D:\Config.xml" /localonly /l:"C:\USMT\logs\ScanState.log" /progress:"C:\USMT\logs\ScanProgress.log" /listfiles:"C:\USMT\logs\ListFiles.txt"

Przydatne parametry:
/o
– nadpisywanie lokalizacji docelowej
/vsc – Włączenie shadowcopy dla używanych plików
/efs{abort|skip|decryptcopy|copyraw|hardlink} – co zrobić z plikami zaszyfrowanymi
/i:<lokalizacja pliku xml> – plik z ustawieniami migracji dla poszczególnych przebiegów
/config:<lokalizacja pliku config.xml> – plik z wcześniej wygenerowaną konfiguracją
/l:<plik z logiem> – log zdarzeń skanowania
/progress:<plik z logiem> – log zdarzeń postępu migracji
/listfiles:<plik z logiem> – log z listą migrowanych plików
/all – wszyscy użytkownicy
localonly  – tylko pliki lokalne

Aby odtworzyć ustawienia na nowej maszynie upewniamy się czy posiadamy wszystkie aplikacjie do których będziemy przenosić ustawienia. Następnie najlepiej z maszyny źródłowej kopiujemy katalog z USMT – chodzi o to by posiadać aktualną wersję plików MigApp.xml, MigUser.xml oraz MigDocs.xml. Bez nich wystąpią błędy przy interpretacji przywracania nietypowych ustawień jak np. nasze Gadu-Gadu.

loadstate <lokalizacja pliku migracji> <parametry>
loadstate "D:\MigFiles" /c /i:"C:\USMT\x86\MigUser.xml" /i:"C:\USMT\x86\MigApp.xml" /l:"C:\USMT\logs\LoadState.log" /progress:"C:\USMT\logs\LoadProgress.log"

Przydatne parametry:
/c
– ignoruj błędy
/i:<lokalizacja pliku xml> – plik z ustawieniami migracji dla poszczególnych przebiegów
/l:<plik z logiem> – log zdarzeń ładowania
/progress:<plik z logiem> – log zdarzeń postępu migracji

Źródła: 
http://msdn.microsoft.com/en-us/library/bb762494(VS.85).aspx
http://technet.microsoft.com/en-us/library/dd560766(WS.10).aspx
http://technet.microsoft.com/en-us/library/dd560764(WS.10).aspx

Reklamy

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s