Czy mogę odinstalować sterownik urządzenia za pośrednictwem sekcji INF?

5

W MSDN stwierdza się, że istnieją dwie techniki instalowania plików INF w systemie Windows XP lub nowszym:

  • Programowo za pomocą funkcji SetupCopyOEMInf.
  • Dodaj wpis o nazwie CopyInf w sekcji INF.

Czy istnieje odpowiednik w sekcji inf, aby odinstalować pliki inf podobne do SetupUninstallOEMInf funkcjonować?

znalazłem to rozwiązanie używając SetupUninstallOEMInf, ale nie wydaje mi się to odpowiednie.

coelhudo
źródło

Odpowiedzi:

1

To zależy od .inf plik (niektóre mogą w ogóle nie mieć funkcji instalacji), ale zawsze możesz spróbować jednego z następujących:

rundll32 setupapi.dll,InstallHinfSection DefaultUninstall 132 <driver.inf>

rundll32 advpack.dll,LaunchINFSection <driver.inf>,UnInstall

rundll32 syssetup.dll,SetupInfObjectInstallAction Uninstall.NT 4 <driver.inf>

(Oczywiście, zastąp nazwę pliku, w tym cytaty, jeśli to konieczne.)

Synetech
źródło
Racja, ale nie znalazłem żadnego wpisu, który wyraźnie usuwałby oemXX.inf wygenerowany przez wpis CopyInf. Mogę usunąć pliki * .sys, które zostały skopiowane do% SystemRoot% Sterowniki systemu Windows32 z wpisem CopyFiles. Jest pozycja Delfiles, ale działa tylko wtedy, gdy wiem, które pliki muszę usunąć.
coelhudo
Pytasz o to oem*.inf automatycznie usuwane z \Windows\INF? Nigdy tego nie widziałem, zwłaszcza w przypadku rzeczy instalowanych za pośrednictwem .inf pliki zamiast .exe lub .msi instalatorzy. Możesz je otworzyć w edytorze tekstu i usunąć te, które nie są już stosowane.
Synetech
Tak, potrzebuję tego do zintegrowania ze skryptem NSIS (instalator z nullsoft). Musi być wykonana automatycznie po odinstalowaniu mojej aplikacji.
coelhudo
O, rozumiem. Jeśli piszesz swój własny (nie) instalator, po prostu dodaj wiersz, aby usunąć .inf plik. Możesz wysłać zapytanie InfPath wartość danego urządzenia pod HKLM\SYSTEM\ControlSet001\Control\Class gałąź rejestru, aby dowiedzieć się, co oem*.inf nazwa pliku jest dla niego.
Synetech
1
Czy jesteś pewien, że urządzenie zostało zainstalowane? Jesteś tego pewien? jest na oem*.inf plik? Wyszukaj w \Windows\inf` for oem * .inf`, które zawierają nazwę urządzenia (lub po prostu sprawdź je wszystkie w notatniku, jeśli jest ich tylko kilka).
Synetech
0

Nie, pliki INF sterownika zazwyczaj nie zawierają sekcji dezinstalacji. Jak na Jak usunąć pliki .inf z systemu i Jak odinstalować urządzenia i pakiety sterowników | Dokumenty Microsoft , DiUninstallDevice i SetupUninstallOEMInf są sposoby, aby odpowiednio odinstalować urządzenie i pakiet sterowników.

Z konsoli możesz zadzwonić do drugiego z devcon co najmniej wersji 6 (z Windows 8.x DDK; potwierdzone działanie w XP):

devcon [-f] dp_delete oemXXX.inf

( -f wymusza dezinstalację, nawet jeśli sterownik jest w użyciu)

Widzieć Szybka metoda instalacji DevCon.exe? jak pobrać narzędzie, jeśli chcesz to zrobić ręcznie.

Z pakietu instalacyjnego musisz skorzystać z udogodnień dostarczonych przez framework instalatora, który wywoła te API dla Ciebie.

ivan_pozdeev
źródło