ultima solucion rgh puede procesar por pirateada perder flasheo cual como actualizar actualizacion automation wix installer windows-installer msiexec

automation - solucion - Cómo encontrar el Código de actualización y el Código de producto de una aplicación instalada en Windows 7



no se puede procesar la actualizacion xbox 360 solucion (10)

En la compilación de previsualización de Windows 10 con PowerShell 5 , puedo ver que puede hacer:

$info = Get-Package -Name YourInstalledProduct $info.Metadata["ProductCode"]

No estoy familiarizado, incluso no estoy seguro si todos los productos tienen UpgradeCode, pero según esta publicación necesita buscar UpgradeCode desde esta ruta de registro:

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Installer/UpgradeCodes

Desafortunadamente, los valores clave del registro son el Código del producto y las claves del registro son el Código de actualización.

Tengo una aplicación instalada en mi máquina. También tengo su código fuente, pero de alguna manera el Código de producto y el Código de actualización de esta aplicación fueron modificados.

Ahora quiero obtener UpgradeCode y ProductCode de esta aplicación instalada. Siento que debe haber alguna herramienta para esto.

¿Puede alguien amablemente decirme cómo obtener el Código de actualización y el Código de producto de una aplicación instalada?


Lleva algo de tiempo devolver los resultados, fácilmente muchas decenas de segundos, pero wmic funciona bien y se puede programar:

wmic product where "Name like ''%Word%''" get Name, Version, IdentifyingNumber

resultado:

IdentifyingNumber Name Version {90140000-001B-0409-0000-0000000FF1CE} Microsoft Office Word MUI (English) 2010 14.0.6029.1000

IdentifingNumber es el ProductCode. No vi una propiedad para UpgradeCode, pero tal vez podría estar enterrado debajo de otra cosa. Consulte http://quux.wiki.zoho.com/WMIC-Snippets.html para ver muchos otros ejemplos, incluida la desinstalación :

wmic path win32_product where "name = ''HP Software Update''" call Uninstall


No había encontrado ninguna forma de averiguar UpgradeCode desde una aplicación instalada, antes de ver la workaround temporal (actualmente) de Yan Sklyarenko . Pero si usted / alguien más encontraría una forma de averiguar (al menos) tanto el Código de actualización como el Código de producto de una MSI, siga leyendo.

De http://www.dwarfsoft.com/blog/2010/06/22/msi-package-code-fun/ , modificado para permitir (cuando se inicia con wscript.exe ) un cuadro emergente de información por MSI (truncado a 1023 chars, debido a la limitación de wscript.echo ); capaz de ingresar MSI (s) desde la GUI y la CLI; alguna validación básica de entrada humana; eliminado el código de depuración (''Establecer oDatabase) y 1 corrección de errores (DB.OpenView).

''Created by: Chris Bennett ''Created Date: 22/06/2010 ''Description: '' Opens up MSI file(s) Passed as Arguments & returns ProductName, ProductCode, '' The HKCR key created from ProductCode (a Packed GUID of ProductCode), the '' PackageCode and the UpgradeCode of the MSI. Much quicker than getting these '' out of the MSI''s the Manual Way.

Referencias
http://msdn.microsoft.com/en-us/library/aa369794%28VS.85%29.aspx http://www.eggheadcafe.com/forumarchives/platformsdkmsi/Jan2006/post25948124.asp

if wscript.arguments.count = 0 then MSIs = inputbox("Enter in * delimited list of MSI''s to query (Max 254 characters)", "MSI Product Details") MSIs = split(MSIs,"*") else set MSIs = wscript.arguments end if set objFS = createobject("scripting.filesystemobject") For Each MSIPath in MSIs if objFS.fileexists(MSIPath) then Set MSIDetails = EvaluateMSI(MSIPath) MSIDetails = MSIPath & ": " & vbcrlf & vbcrlf & "Product Name: " &_ MSIDetails("ProductName") & vbcrlf & "Product Code: " &_ MSIDetails("ProductCode") & vbcrlf & "Product Key : " &_ "HKCR/Installer/Products/" & PackGUID(MSIDetails("ProductCode")) &_ vbcrlf & "Package Code: " & MSIDetails("PackageCode") & vbcrlf &_ "Upgrade Code: " & MSIDetails("UpgradeCode") & vbcrlf WScript.Echo MSIDetails else wscript.echo "Inaccessible; Non-existant; or Error in Path for:" & vbcrlf & MSIPath & vbcrlf & "... skipping" end if Next Function EvaluateMSI(MSIPath) On Error Resume Next '' create installer object Set oInstaller = CreateObject("WindowsInstaller.Installer") '' open msi in read-only mode Set oDatabase = oInstaller.OpenDatabase(MSIPath, 0) Set objDictionary = CreateObject("Scripting.Dictionary") '' Get Package Code from Summary Information Stream Set streamobj = oDatabase.SummaryInformation(0) ''0 = read only objDictionary("PackageCode") = streamobj.Property(9) '' Get Product Name from MSI Database Set View = oDatabase.OpenView("Select `Value` From Property WHERE `Property`=''ProductName''") View.Execute Set ProductName = View.Fetch objDictionary("ProductName") = ProductName.StringData(1) '' Get Product Code from MSI Database Set View = oDatabase.OpenView("Select `Value` From Property WHERE `Property`=''ProductCode''") View.Execute Set ProductCode = View.Fetch objDictionary("ProductCode") = ProductCode.StringData(1) '' Get Upgrade Code from MSI Database Set View = oDatabase.OpenView("Select `Value` From Property WHERE `Property`=''UpgradeCode''") View.Execute Set UpgradeCode = View.Fetch objDictionary("UpgradeCode") = UpgradeCode.StringData(1) Set EvaluateMSI = objDictionary On Error Goto 0 End Function Function PackGUID(guid) PackGUID = "" ''* Dim temp temp = Mid(guid,2,Len(guid)-2) Dim part part = Split(temp,"-") Dim pack pack = "" Dim i, j For i = LBound(part) To UBound(part) Select Case i Case LBound(part), LBound(part)+1, LBound(part)+2 For j = Len(part(i)) To 1 Step -1 pack = pack & Mid(part(i),j,1) Next Case Else For j = 1 To Len(part(i)) Step 2 pack = pack & Mid(part(i),j+1,1) & Mid(part(i),j,1) Next End Select Next ''* PackGUID = pack End Function

Si uno necesita copiar y pegar cualquiera de los GUID''s en la ventana emergente, tiendo a encontrar más fácil usar una siguiente casilla de entrada, como inputbox "","",MSIDetails


Otra solución demasiado complicada, con el beneficio de no tener que volver a instalar la aplicación como lo requería la solución anterior. Esto requiere que tenga acceso al msi (o un setup.exe con el msi incrustado).

Si tiene Visual Studio 2012 (o posiblemente otras ediciones) e instala el "InstallShield LE" gratuito, puede crear un nuevo proyecto de instalación con InstallShield.

Una de las opciones de configuración en el paso "Organizar su configuración" se denomina "Rutas de actualización". Abra las propiedades de las rutas de actualización, y en el panel izquierdo haga clic en "Actualizar rutas" y seleccione "Nueva ruta de actualización" ... ahora busque el msi (o setup.exe que contiene el msi) y haga clic en "abrir". El código de actualización se completará para usted en la página de configuración en el panel derecho que ahora debería ver.


Para todos los que usan:

Get-WMIObject win32_product

Debe tener en cuenta que se ejecutará una auto-sanación en cada aplicación MSI instalada en la PC. Si tuviera que verificar eventvwr, dirá que ha terminado de reconfigurar cada producto.

En este caso, uso lo siguiente (una mezcla del método de Yan Sklyarenko):

$Reg = @( "HKLM:/Software/Wow6432Node/Microsoft/Windows/CurrentVersion/Uninstall/*", "HKLM:/Software/Microsoft/Windows/CurrentVersion/Uninstall/*" ) $InstalledApps = Get-ItemProperty $Reg -EA 0 $WantedApp = $InstalledApps | Where { $_.DisplayName -like "*<part of product>*" }

Ahora si fuera a escribir:

$WantedApp.PSChildName

Se le daría lo siguiente:

PS D:/SCCM> $WantedApp.PSChildName {047904BA-C065-40D5-969A-C7D91CA93D62}

Si su organización utiliza un montón de MST al instalar aplicaciones que le gustaría evitar el autoencaminamiento, revertirán algunas configuraciones cruciales.

  • Nota: Encontrará su código de producto, luego la actualización se puede encontrar como mencionó Yan. Por lo general, solo uso "InstEd It!" o ''Orca'' luego ir a la tabla de propiedades de la MSI y los enumera en la parte superior.

Powershell maneja tareas como esta de manera bastante práctica:

$productCode = (gwmi win32_product | ` ? { $_.Name -Like "<PRODUCT NAME HERE>*" } | ` % { $_.IdentifyingNumber } | ` Select-Object -First 1)

Luego puede usarlo para obtener la información de desinstalación:

$wow = "" $is32BitInstaller = $True # or $False if($is32BitInstaller -and [System.Environment]::Is64BitOperatingSystem) { $wow = "/Wow6432Node" } $regPath = "HKEY_LOCAL_MACHINE/SOFTWARE$wow/Microsoft/Windows/CurrentVersion/Uninstall" dir "HKLM:/SOFTWARE$wow/Microsoft/Windows/CurrentVersion/Uninstall" | ` ? { $_.Name -Like "$regPath/$productCode" }




Si tiene el instalador msi, ábralo con Orca (herramienta de Microsoft), la propiedad de la tabla (filas Código de actualización, Código de producto, Versión del producto, etc.) o la columna Actualizar la tabla Código de actualización.

Intente encontrar el instalador a través del registro: HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / Windows / CurrentVersion / Desinstalar buscar la subclave necesaria y ver el valor InstallSource. Quizás en el camino puedas encontrar el archivo MSI.


IMPORTANTE : Ha pasado un tiempo desde que esta respuesta se publicó originalmente, y las personas inteligentes obtuvieron respuestas más acertadas. Comprobar ¿Cómo puedo encontrar el Código de actualización para un archivo MSI instalado? de @ Stein Åsmul si necesita un enfoque sólido e integral.

Aquí hay otra forma (no necesitas ninguna herramienta):

  • abrir el registro del sistema y buscar la clave HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall (si es un instalador de 32 bits en una máquina de 64 bits, podría estar bajo HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Microsoft/Windows/CurrentVersion/Uninstall en lugar).
  • los GUID enumerados debajo de esa clave son los productos instalados en esta máquina
  • encuentre el que está hablando, simplemente paso uno por uno hasta que vea su nombre en el panel derecho

Este GUID al que se detuvo es el ProductCode.

Ahora, si está seguro de que la reinstalación de esta aplicación funcionará bien, puede ejecutar la siguiente línea de comando:

msiexec / i {PRODUCT-CODE-GUID-HERE} REINSTALL = ALL REINSTALLMODE = omus / l * v log.txt

Esto "reparará" tu aplicación. Ahora mira el archivo de registro y busca "UpgradeCode". Este valor se descarga allí.

NOTA: solo debe hacer esto si está seguro de que el flujo de reinstalación se implementó correctamente y esto no interrumpirá su aplicación instalada.