Praca z instalacjami oprogramowaniaWorking with Software Installations

Aplikacje, które są przeznaczone do użycia Instalatora Windows jest możliwy za pośrednictwem usługi WMI klasy Win32_Product klasy, ale nie wszystkie aplikacje używane obecnie, używając Instalatora Windows.Applications that are designed to use Windows Installer can be accessed through WMI's Win32_Product class, but not all applications in use today use the Windows Installer. Ponieważ Instalator systemu Windows zapewnia szeroką gamą standardowych technik do pracy z aplikacjami można zainstalować, możemy koncentruje się przede wszystkim na te aplikacje.Because the Windows Installer provides the widest range of standard techniques for working with installable applications, we will focus primarily on those applications. Aplikacje używające Instalatora alternatywnego procedury zazwyczaj nie będą zarządzane przez Instalatora Windows.Applications that use alternate setup routines will generally not be managed by the Windows Installer. Określone techniki pracy z tymi aplikacjami zależy od Instalatora oprogramowania i decyzje podjęte przez dewelopera aplikacji.Specific techniques for working with those applications will depend on the installer software and decisions made by the application developer.

Uwaga

Aplikacje zainstalowane przez kopiowanie plików aplikacji na komputerze, zwykle nie można zarządzać za pomocą techniki opisane w tym miejscu.Applications that are installed by copying the application files to the computer usually cannot be managed by using techniques discussed here. Te aplikacje, jak pliki i foldery można zarządzać za pomocą techniki opisane w sekcji "Praca z pliki i foldery".You can manage these applications as files and folders by using the techniques discussed in the "Working With Files and Folders" section.

Wyświetlanie listy aplikacji Instalatora systemu WindowsListing Windows Installer Applications

Aby wyświetlić listę aplikacji zainstalowanych przy użyciu Instalatora Windows na komputerze lokalnym lub zdalnym, użyj następującego prostego zapytania usługi WMI:To list the applications installed with the Windows Installer on a local or remote system, use the following simple WMI query:

PS> Get-WmiObject -Class Win32_Product -ComputerName .

IdentifyingNumber : {7131646D-CD3C-40F4-97B9-CD9E4E6262EF}
Name              : Microsoft .NET Framework 2.0
Vendor            : Microsoft Corporation
Version           : 2.0.50727
Caption           : Microsoft .NET Framework 2.0

Aby wyświetlić wszystkie właściwości obiektu klasy Win32_Product do wyświetlenia, użyj parametru właściwości formatowania poleceń cmdlet, takich jak polecenia cmdlet Format listy o wartości * (wszystkie).To display all of the properties of the Win32_Product object to the display, use the Properties parameter of the formatting cmdlets, such as the Format-List cmdlet, with a value of * (all).

PS> Get-WmiObject -Class Win32_Product -ComputerName . | Where-Object -FilterScript {$_.Name -eq "Microsoft .NET Framework 2.0"} | Format-List -Property *

Name              : Microsoft .NET Framework 2.0
Version           : 2.0.50727
InstallState      : 5
Caption           : Microsoft .NET Framework 2.0
Description       : Microsoft .NET Framework 2.0
IdentifyingNumber : {7131646D-CD3C-40F4-97B9-CD9E4E6262EF}
InstallDate       : 20060506
InstallDate2      : 20060506000000.000000-000
InstallLocation   :
PackageCache      : C:\WINDOWS\Installer\619ab2.msi
SKUNumber         :
Vendor            : Microsoft Corporation

Można użyć filtru Get-WmiObject parametr, aby wybrać tylko Microsoft .NET Framework 2.0.Or, you could use the Get-WmiObject Filter parameter to select only Microsoft .NET Framework 2.0. Ponieważ filtr używane w tym poleceniu jest filtr WMI, używa składni języka zapytań usługi WMI (WQL), nie składnię Windows PowerShell.Because the filter used in this command is a WMI filter, it uses WMI Query Language (WQL) syntax, not Windows PowerShell syntax. Zamiast tego należy:Instead,:

Get-WmiObject -Class Win32_Product -ComputerName . -Filter "Name='Microsoft .NET Framework 2.0'"| Format-List -Property *

Należy pamiętać, że kwerendy WQL często Użyj znaków, takich jak spacji lub znaku równości, które mają specjalne znaczenie w programie Windows PowerShell.Note that WQL queries frequently use characters, such as spaces or equal signs, that have a special meaning in Windows PowerShell. Z tego powodu rozsądne jest zawsze wartość parametru filtru należy ująć w cudzysłów.For this reason, it is prudent to always enclose the value of the Filter parameter in quotation marks. Można również użyć znak ucieczki środowiska Windows PowerShell, backtick (`), ale nie może to poprawić czytelność.You can also use the Windows PowerShell escape character, a backtick (`), although it may not improve readability. Polecenie jest odpowiednikiem poprzedniego polecenia i zwraca wyniki, ale używa backtick ucieczki znaków specjalnych, zamiast zamykający ciąg filtru całego.The following command is equivalent to the previous command and returns the same results, but uses the backtick to escape special characters, instead of quoting the entire filter string.

Get-WmiObject -Class Win32_Product -ComputerName . -Filter Name`=`'Microsoft` .NET` Framework` 2.0`' | Format-List -Property *

Aby wyświetlić listę tylko właściwości, które są potrzebne, użyj parametru właściwości formatowania poleceń cmdlet do żądanej właściwości listy.To list only the properties that interest you, use the Property parameter of the formatting cmdlets to list the desired properties.

Get-WmiObject -Class Win32_Product -ComputerName . | Format-List -Property Name,InstallDate,InstallLocation,PackageCache,Vendor,Version,IdentifyingNumber
...
Name              : HighMAT Extension to Microsoft Windows XP CD Writing Wizard
InstallDate       : 20051022
InstallLocation   : C:\Program Files\HighMAT CD Writing Wizard\
PackageCache      : C:\WINDOWS\Installer\113b54.msi
Vendor            : Microsoft Corporation
Version           : 1.1.1905.1
IdentifyingNumber : {FCE65C4E-B0E8-4FBD-AD16-EDCBE6CD591F}
...

Na koniec, aby znaleźć tylko nazwy zainstalowanych aplikacji, prosty całej Format instrukcji upraszcza dane wyjściowe:Finally, to find only the names of installed applications, a simple Format-Wide statement simplifies the output:

Get-WmiObject -Class Win32_Product -ComputerName .  | Format-Wide -Column 1

Teraz mamy kilka sposobów, aby przyjrzeć się aplikacji, które są używane do instalacji Instalatora Windows, firma Microsoft ma być nie omówiono inne aplikacje.Although we now have several ways to look at applications that used the Windows Installer for installation, we have not considered other applications. Ponieważ większość standardowych aplikacji zarejestrować ich dezinstalatora z systemem Windows, firma Microsoft może współpracować z tymi lokalnie, znajdowanie je w rejestrze systemu Windows.Because most standard applications register their uninstaller with Windows, we can work with those locally by finding them in the Windows registry.

Wyświetlanie listy wszystkich do odinstalowania aplikacjiListing All Uninstallable Applications

Nie ma gwarantowane można znaleźć każdej aplikacji w systemie, ale istnieje możliwość znaleźć wszystkie programy z listy wyświetlanych w oknie dialogowym Dodaj lub usuń programy.Although there is no guaranteed way to find every application on a system, it is possible to find all programs with listings displayed in the Add or Remove Programs dialog box. Dodaj lub usuń programy znajduje tych aplikacji w następującym kluczu rejestru:Add or Remove Programs finds these applications in the following registry key:

HKEY_LOCAL_MACHINE\oprogramowania\Microsoft\Windows\CurrentVersion\odinstalować.HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall.

Omówione można również ten klucz, aby znaleźć aplikacji.We can also examine this key to find applications. Aby ułatwić wyświetlić klucz Odinstaluj, możemy Mapuj dysk programu Windows PowerShell do tej lokalizacji w rejestrze:To make it easier to view the Uninstall key, we can map a Windows PowerShell drive to this registry location:

PS> New-PSDrive -Name Uninstall -PSProvider Registry -Root HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

Name       Provider      Root                                   CurrentLocation
----       --------      ----                                   ---------------
Uninstall  Registry      HKEY_LOCAL_MACHINE\SOFTWARE\Micr...

Uwaga

HKLM: stacja jest mapowana do katalogu głównego HKEY_LOCAL_MACHINE, przez co możemy użyć ścieżki do klucza Odinstaluj tego dysku.The HKLM: drive is mapped to the root of HKEY_LOCAL_MACHINE, so we used that drive in the path to the Uninstall key. Zamiast HKLM: można została określona ścieżka rejestru za pomocą HKLM lub HKEY_LOCAL_MACHINE.Instead of HKLM: we could have specified the registry path by using either HKLM or HKEY_LOCAL_MACHINE. Zaletą korzystania z istniejącym dyskiem rejestru jest wypełnianie nazw kluczy, dlatego firma Microsoft nie trzeba wpisywać ich używanie uzupełniania po naciśnięciu tabulatora.The advantage of using an existing registry drive is that we can use tab-completion to fill in the keys names, so we do not need to type them.

Mamy teraz dysk o nazwie "Odinstaluj", który może służyć do wyszukiwania szybko i wygodnie instalacje aplikacji.We now have a drive named "Uninstall" that can be used to quickly and conveniently look for application installations. Znaleźliśmy liczba zainstalowanych aplikacji liczbą kluczy rejestru dezinstalacji: dysk programu Windows PowerShell:We can find the number of installed applications by counting the number of registry keys in the Uninstall: Windows PowerShell drive:

PS> (Get-ChildItem -Path Uninstall:).Count
459

Firma Microsoft można wyszukiwać tej listy dodatkowe aplikacje za pomocą różnych technik, począwszy od Get-ChildItem.We can search this list of applications further by using a variety of techniques, beginning with Get-ChildItem. Aby uzyskać listę aplikacji i zapisać je w $UninstallableApplications zmiennej, użyj następującego polecenia:To get a list of applications and save them in the $UninstallableApplications variable, use the following command:

$UninstallableApplications = Get-ChildItem -Path Uninstall:

Uwaga

Użyto długich nazwę zmiennej tutaj dla uzyskania przejrzystości.We are using a lengthy variable name here for clarity. W rzeczywistości nie ma ma powodu do użycia długie nazwy.In actual use, there is no reason to use long names. Do nazwy zmiennych mogą używać uzupełniania po naciśnięciu tabulatora, również można użyć nazwy znaków 1 i 2 dla danej szybkości.Although you can use tab-completion for variable names, you can also use 1-2 character names for speed. Nazwy dłuższe, opisowe są najbardziej przydatne podczas tworzenia kodu do ponownego użycia.Longer, descriptive names are most useful when you are developing code for reuse.

Aby wyświetlić wartości wpisów rejestru w kluczach rejestru, w obszarze dezinstalacji, należy użyć metody GetValue kluczy rejestru.To display the values of the registry entries in the registry keys under Uninstall, use the GetValue method of the registry keys. Wartość metody jest nazwą wpisu rejestru.The value of the method is the name of the registry entry.

Na przykład aby znaleźć nazwy wyświetlanej aplikacji w kluczu Odinstaluj, użyj następującego polecenia:For example, to find the display names of applications in the Uninstall key, use the following command:

Get-ChildItem -Path Uninstall: | ForEach-Object -Process { $_.GetValue('DisplayName') }

Nie ma żadnej gwarancji, że te wartości są unikatowe.There is no guarantee that these values are unique. W poniższym przykładzie dwa elementy zainstalowane są wyświetlane jako "Windows Media Encoder Seria 9":In the following example, two installed items appear as "Windows Media Encoder 9 Series":

PS> Get-ChildItem -Path Uninstall: | Where-Object -FilterScript { $_.GetValue("DisplayName") -eq "Windows Media Encoder 9 Series"}

   Hive: Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Micros
oft\Windows\CurrentVersion\Uninstall

SKC  VC Name                           Property
---  -- ----                           --------
  0   3 Windows Media Encoder 9        {DisplayName, DisplayIcon, UninstallS...
  0  24 {E38C00D0-A68B-4318-A8A6-F7... {AuthorizedCDFPrefix, Comments, Conta...

Instalowanie aplikacjiInstalling Applications

Można użyć klasy Win32_Product klasy instalowania pakietów Instalatora Windows lokalnie i zdalnie.You can use the Win32_Product class to install Windows Installer packages, remotely or locally.

Uwaga

W systemie Windows Vista, Windows Server 2008 i nowszych wersjach systemu Windows Aby zainstalować aplikację, należy uruchomić środowiska Windows PowerShell przy użyciu opcji "Uruchom jako administrator".On Windows Vista, Windows Server 2008, and later versions of Windows, to install an application, you must start Windows PowerShell with the "Run as administrator" option.

Podczas instalowania zdalnie, należy użyć ścieżkę sieciową Universal Naming Convention (UNC) należy określić ścieżkę do pakietu msi, ponieważ w podsystemie WMI nie rozpoznaje ścieżki programu Windows PowerShell.When installing remotely, use a Universal Naming Convention (UNC) network path to specify the path to the .msi package, because the WMI subsystem does not understand Windows PowerShell paths. Na przykład, aby zainstalować pakiet NewPackage.msi znajduje się w udziale sieciowym \ \AppServ\dsp na komputerze zdalnym PC01, wpisz następujące polecenie w wierszu polecenia programu Windows PowerShell:For example, to install the NewPackage.msi package located in the network share \\AppServ\dsp on the remote computer PC01, type the following command at the Windows PowerShell prompt:

(Get-WMIObject -ComputerName PC01 -List | Where-Object -FilterScript {$_.Name -eq 'Win32_Product'}).Install(\\AppSrv\dsp\NewPackage.msi)

Aplikacje, które nie korzystają z technologii Instalatora systemu Windows mogą mieć specyficzne dla aplikacji dostępne metody automatycznego wdrażania.Applications that do not use Windows Installer technology may have application-specific methods available for automated deployment. Aby ustalić, czy jest to metoda automatyzacji wdrażania, zajrzyj do dokumentacji aplikacji lub zapoznaj się z dostawcą aplikacji, system pomocy technicznej.To determine whether there is a method for deployment automation, check the documentation for the application or consult the application vendor's support system. W niektórych przypadkach nawet wtedy, gdy z dostawcą aplikacji nie specjalnie projektowania aplikacji do automatyzacji instalacji Instalator producenta oprogramowania może mieć niektóre metody automatyzacji.In some cases, even if the application vendor did not specifically design the application for installation automation, the installer software manufacturer may have some techniques for automation.

Usuwanie aplikacjiRemoving Applications

Usuwanie pakietu Instalatora Windows za pomocą środowiska Windows PowerShell działa w przybliżeniu taki sam sposób jak instalowania pakietu.Removing a Windows Installer package by using Windows PowerShell works in approximately the same way as installing a package. Oto przykład, który wybiera pakietu do odinstalowania, na podstawie jego nazwy; w niektórych przypadkach może być łatwiejsze do filtrowania z numerowi:Here is an example that selects the package to uninstall based on its name; in some cases it may be easier to filter with the IdentifyingNumber:

(Get-WmiObject -Class Win32_Product -Filter "Name='ILMerge'" -ComputerName . ).Uninstall()

Usunięcie inne aplikacje nie jest dość tak proste, nawet wtedy, gdy wykonywane lokalnie.Removing other applications is not quite so simple, even when done locally. Firma Microsoft można znaleźć ciągi dezinstalacji wiersza polecenia dla tych aplikacji, wyodrębniając UninstallString właściwości.We can find the command line uninstallation strings for these applications by extracting the UninstallString property. Ta metoda działa w aplikacji Instalatora systemu Windows i starszych programów znajdujących się w kluczu dezinstalacji:This method works for Windows Installer applications and for older programs appearing under the Uninstall key:

Get-ChildItem -Path Uninstall: | ForEach-Object -Process { $_.GetValue('UninstallString') }

Dane wyjściowe można filtrować według nazwy wyświetlanej, jeśli chcesz:You can filter the output by the display name, if you like:

Get-ChildItem -Path Uninstall: | Where-Object -FilterScript { $_.GetValue('DisplayName') -like 'Win*'} | ForEach-Object -Process { $_.GetValue('UninstallString') }

Jednak te ciągi nie może być bezpośrednio można używać z wierszu polecenia programu Windows PowerShell bez modyfikacji niektórych.However, these strings may not be directly usable from the Windows PowerShell prompt without some modification.

Uaktualnianie aplikacji Instalatora systemu WindowsUpgrading Windows Installer Applications

Aby uaktualnić aplikację, musisz znać nazwę aplikacji i ścieżkę do pakietu uaktualnienia aplikacji.To upgrade an application, you need to know the name of the application and the path to the application upgrade package. Z tych informacji można uaktualnić aplikację za pomocą jednego polecenia programu Windows PowerShell:With that information, you can upgrade an application with a single Windows PowerShell command:

(Get-WmiObject -Class Win32_Product -ComputerName . -Filter "Name='OldAppName'").Upgrade(\\AppSrv\dsp\OldAppUpgrade.msi)