Windows, MSI dosyalarını kaldırma için nerede depolar?


25

Windows'un (XP'den 7'ye) MSI dosyalarının yüklenmesini ve kaldırılmasını nasıl işlediğini çözmeye çalışıyorum. Windows Installer'ın kaldıramadığı durumlarda ortaya çıktım, çünkü orijinal MSI dosyasını özlüyor, bu da yüklü olan tüm MSI paketlerinin bir kopyasını sakladığına inanmamı sağlıyor. Nerede?

Birkaç teorim vardı.

  1. Yüklendiği klasörde kalmasını bekler. Kayıt defteri anahtarları HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstallözgün yükleme klasörüne işaret eder ve MSI dosyası eksik olduğunda hata mesajları bunu işaret eder. MSI dosyasını bu klasörden kaldırmak, kaldırma işlemini zorlaştırmaz, bu yüzden bu teoriyi reddettim.

  2. C:\Windows\Installer. Bu klasör aslında görünüşte rastgele MSI dosyaları adında bir demet içerir. Ancak bu liste eksik. Bu klasörde bir MSI kopyası olmayan 1) 'de belirtilen kayıt defteri anahtarındaki girişleri buluyorum.

Peki bu nasıl çalışıyor? Windows yükleyici, MSI 1) 'de olmasa da, MSI yüklü uygulamaları nasıl kaldırabilir?


Windows her zaman tutmaz. Kullanıcının Windows'a bu dosyaların önbelleğini gerçekten temizlemesini söylemesinin birçok yolu vardır. Kaldırılamayan bir yazılımınız varsa, geliştiricinin yükleyiciyi yanlış oluşturduğu anlamına gelir. Konumu Pencereler (desteklenmeyen bir işletim sistemi hakkında endişeli neden) XP ve Windows 7 ve / veya Windows 8 arasındaki farklı olacaktır
Ramhound

Yanıtlar:


44

Görünüşe göre böyle çalışır (Windows 7'de, XP ve diğer işletim sistemlerini bilmiyorum):

Bir kullanıcı bir uygulama yüklediğinde, Windows aşağıdakileri yapar:

1) Bir kayıt defteri anahtarı oluşturur

HKLM \ YAZILIM \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ [ProductId GUID]

Bu uygulama için.

Uygulamanızın yükleyicisinin orijinal msi dosyasına erişiminiz varsa, orca.exe içinde msi dosyasını açıp orca'da soldaki "Özellik" seçeneğini tıklayarak ve "ProductCode" ifadesini arayarak [ProductID GUID] öğesini bulabilirsiniz. sağdaki çizgi. Orijinal * .msi dosyasına erişiminiz yoksa, uygulamanın adı için HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall kayıt anahtarını arayabilirsiniz.

Uygulamanızı (örneğin kaldırmayı reddeder) Denetim Masası'ndaki yüklü uygulamalar listesinden silmek istiyorsanız, girişi bu Kaldırma tuşundan silebilirsiniz. Kontrol panelindeki listeden kesinlikle kaybolacak, ancak Windows hala hatırlayacaktır. Örneğin, aynı uygulamanın bir sonraki sürümünü yüklemeyi denerseniz, Installer önceki sürümü kaldırmakta ısrar edebilir. Bunun için madde 2'ye bakınız.

2) Windows, orijinal * .msi dosyasını C: \ Windows \ Installer klasörüne kopyalar ve rastgele bir adla yeniden adlandırır (.msi uzantısını yine de tutar). Windows ayrıca, Kayıt Defteri'nde HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\[InternalUserId]\Products\[some random guid-like sequence of chars identifying to windows your installation]\InstallProperties.ValueName "LocalPackage" ifadesinde bir anahtar oluşturur . Dosyayı C: \ windows \ Installer'da bulmak için, Windows explorer'da bu klasöre gidebilir, Ayrıntılar görünümüne geçirebilir, "Konu" sütununu görünür hale getirebilir ve tüm nnnnnnnnn.msi ürününün ilgili ismine uygun olduğunu göreceksiniz.


6
Gizli sır için sana iki kez oy vermek istedim make column "Subject" visible and you will see for all nnnnnnnn.msi fies their corresponding name of product.. Windows böyle gizemli bir işletim sistemidir: P
RBT

3) 3. adım benim için gerekliydi. Kaldırıcı dosyayı kabul etmeden önce 5188bfc6.msi dosyasını (hex # .msi) kopyalamak ve MyApp.msi orijinal dosya adıyla yeniden adlandırmak zorunda kaldım. Bu kaldırma işleminden sonra iyi çalıştı.
Joe B,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.