Pliki MSI
Plik MSI zawiera prymitywną bazę danych MS SQL osadzoną w pliku pamięci o strukturze COM (system plików w pliku ze strumieniami pamięci różnych typów - stary format MS Office COM / OLE).
Możesz wyodrębnić pliki z MSI lub faktycznie dekompilować cały MSI ze wszystkimi jego strumieniami. Każde podejście jest krótko opisane poniżej.
Przy dekompilacji (prawie) możliwa jest pełna przezroczystość, z wyjątkiem skompilowanych akcji niestandardowych (zwykle napisanych w C / C ++). Zarządzany, skompilowany kod (C #) może być (teoretycznie) dekompilowany.
Aby określić (z grubsza), co faktycznie wykonuje niestandardowa akcja „czarnej skrzynki”, możesz przechwycić instalację MSI za pomocą narzędzia do przepakowywania - które skanuje system przed i po instalacji, wymieniając wszelkie zmiany - widzisz, co się stało, ale nie sposób zdarzyło się. Bardzo niewiele osób potrzebuje takiego poziomu kontroli.
Tylko porównanie plików
To stare wiadomości, ale jeśli chodzi tylko o porównanie plików osadzonych w MSI / setup.exe , możesz użyć instalacji administracyjnej, aby wyodrębnić pliki osadzone w MSI / setup.exe, a następnie użyć dowolnego narzędzia do porównywania plików aby porównać pliki wyodrębnione dla każdej wersji:
setup.exe /a
msiexec.exe /a "MySetup.msi"
Jeśli MSI nie ma odpowiedniego GUI umożliwiającego interaktywne określenie folderu wyjściowego, możesz spróbować go określić za pomocą wiersza polecenia:
msiexec.exe /a "MySetup.msi" TARGETDIR="C:\MyOutputFolder
Pliki Setup.exe zawierające osadzone pliki MSI mogą być różnego typu, niektóre wskaźniki:
Zasadniczo instalacja administracyjna wyodrębnia pliki instalatora z osadzonych plików CAB w samym MSI (CABS może być również zewnętrzny) i wysyła je w schludnej strukturze folderów, która z grubsza odzwierciedla ich zamierzone docelowe miejsca docelowe podczas instalacji. W MSI można zastosować kilka form kompresji - wszystkie obsługiwane przez instalację administracyjną. Proszę nie rozpakowywać plików MSI !
Na koniec Media table
dostosowuje się do korzystania z wyodrębnionych plików źródłowych zamiast wewnętrznych plików CAB - a wewnętrzne pliki CAB są usuwane, co potencjalnie czyni wyjściowy plik MSI znacznie mniejszym niż oryginał. Co najważniejsze, wszelkie podpisy cyfrowe są usuwane .
Kiedyś pliki MSI były buforowane przy %SystemRoot%\Installer
usuwaniu plików CAB (co czyni je małymi), ale teraz są buforowane w pełnym rozmiarze, co potencjalnie może znacznie zwiększyć wymagania dotyczące pamięci. Korzystanie z instalacji administracyjnych jest sposobem na zmniejszenie tego rozmiaru pamięci podręcznej (za karą za usunięcie podpisów cyfrowych). Więcej informacji na ten temat: Dlaczego MSI wymaga oryginalnego pliku .msi, aby kontynuować odinstalowywanie?
Więcej informacji na temat instalacji administracyjnych tutaj:
„Porównywanie treści MSI”
Jeśli chcesz bardziej szczegółowo określić, co różni dwa pliki MSI (na przykład wersję 1 i 2 pakietu), możesz bardziej zaangażować się przy użyciu odpowiedniej przeglądarki plików MSI lub dekompilatora MSI .
Napisałem napis na stackoverflow.com na temat porównywania plików MSI . Zasugerowano mi dodanie linku tutaj na serverfault.com do tej zawartości. Może jest to pomocne dla administratorów systemu.
Nie chcę mieć problemu z dwoma źródłami, więc po prostu połączę się z wersją stackoverflow (mam nadzieję, że jest to w porządku): Jak mogę porównać zawartość dwóch (lub więcej) plików MSI? W tej odpowiedzi wymieniono kilka narzędzi (zarówno bezpłatnych, jak i komercyjnych), które mogą pomóc w wykonaniu „prawdziwego porównania”.
dark.exe
Szczególnie interesujące mogą być zaawansowane możliwości dekompilacji MSI z zestawu narzędzi WiX . Oprócz dekompilacji plików MSI w połączonej zawartości opisano również, jak dekompresowaćsetup.exe
pliki utworzone za pomocą zestawu narzędzi WiX (funkcja bootstrapper, która może instalować kolejno kilka plików MSI i osadzone pliki EXE). Dekompresowana zawartość może z kolei zostać zdemontowana przez ten samdark.exe
plik (pod warunkiem, że są to pliki MSI).
Pozwól mi również wrzucić link do obsługi plików setup.exe utworzonych za pomocą innych narzędzi do wdrażania .