MSI-ID auslesen (auf Linux-System)

Antworten
holgerv
Beiträge: 288
Registriert: 20 Aug 2012, 09:35

MSI-ID auslesen (auf Linux-System)

Beitrag von holgerv »

Hallo,

wir möchten bei uns bestimmte Aktualisierungen von opsi-Paketen automatisieren. Dafür brauchen wir eine Möglichkeit, auf einem Linux-Rechner die MSI-ID einer MSI-Datei auszulesen.

Weiß jemand von euch, wie ich das machen kann? - Ich habe bisher nur Möglichkeiten gefunden, die nur unter Windows laufen.

Vielen Dank!


Holger
dropped91
Beiträge: 73
Registriert: 11 Mai 2017, 16:29

Re: MSI-ID auslesen (auf Linux-System)

Beitrag von dropped91 »

Hi,

gerade nicht am Rechner, aber kann file das nicht unter Linux? Ich probiere das morgen mal...


Gruß
dropped
Benutzeravatar
GEI
Beiträge: 229
Registriert: 12 Feb 2010, 13:00
Wohnort: Braunschweig
Kontaktdaten:

Re: MSI-ID auslesen (auf Linux-System)

Beitrag von GEI »

holgerv hat geschrieben:Hallo,
brauchen wir eine Möglichkeit, auf einem Linux-Rechner die MSI-ID einer MSI-Datei auszulesen.
Weiß jemand von euch, wie ich das machen kann? - Ich habe bisher nur Möglichkeiten gefunden, die nur unter Windows laufen.
wenn keiner antwortet .... notfalls mit der "Holzhammer"-Methode --> strings

Im Rahmen des o4i-Communtiyprojektes benötige ich für den o4i-notifier (1) machmal die konkrete Fileversion. Nicht alle Programmierer benennen ihre Setupdatei inclusive der Version :(
Für die meisten Setup.exe kann man unter Linux das Paket 'pev' benutzen.

Code: Alles auswählen

pev -p CLIENT_DATA/install_flash_player_31_plugin.exe
31.0.0.108
Google stellt zum Download nur 'GoogleChromeStandaloneEnterprise.msi' zur Verfügung, auf der Downloadseite ist die Versionsnummer auch nicht vermerkt.

Code: Alles auswählen

strings -n 9 CLIENT_DATA/GoogleChromeStandaloneEnterprise.msi | grep Copyright | cut -d' ' -f1
69.0.3497.100
(erst nach einer bekannten Versionsnummer suchen, danach einen constanten Text daneben nehmen .... in dem Fall war es 'Copyright')

Gruss
Detlef

(1) https://opsi.wzb.eu/wiki/index.php/Update-Notify/Public
(2) https://www.listserv.dfn.de/sympa/info/o4i-notify (offene Mailingliste, SubScribe/unSubscribe)
Zuletzt geändert von GEI am 24 Sep 2018, 07:16, insgesamt 1-mal geändert.
Georg-Eckert-Institut - Leibniz-Institut für internationale Schulbuchforschung (GEI)
---
'opsi4instituts' = Communityprojekt für wissenschaftliche Einrichtungen
offenes Repository, Update-Notifier
http://www.gei.de/o4i - https://wiki.o4i.org
Benutzeravatar
wolfbardo
uib-Team
Beiträge: 1354
Registriert: 01 Jul 2008, 12:10

Re: MSI-ID auslesen (auf Linux-System)

Beitrag von wolfbardo »

Evtl hilft

Code: Alles auswählen

msitools
Allerdings scheint dies auch nicht direkt zum Ziel zu führen:

z.B. liefert

Code: Alles auswählen

msiinfo suminfo GoogleChromeStandaloneEnterprise.msi 
Title: Installation Database
Subject: Google Chrome Installer
Author: Google, Inc.
Keywords: Installer
Comments: 69.0.3497.100 Copyright 2018 Google Inc.
Template: Intel;1033
Revision number (UUID): {A75BC1B4-0E7D-4A31-913A-6EB3950A4F6A}
Created: Sat Sep 15 10:54:40 2018
Last saved: Sat Sep 15 10:54:40 2018
Version: 150 (96)
Source: 2 (2)
Application: Windows Installer XML Toolset (3.8.1128.0)
Security: 2 (2)
die falsche msi-id

Wenn man mittels

Code: Alles auswählen

msiinfo tables GoogleChromeStandaloneEnterprise.msi 
_SummaryInformation
_ForceCodepage
_Validation
AdminExecuteSequence
AdminUISequence
AdvtExecuteSequence
AppSearch
Property
Binary
Component
Directory
CustomAction
Feature
FeatureComponents
File
InstallExecuteSequence
InstallUISequence
Media
Registry
RegLocator
RemoveRegistry
Signature
Upgrade
dann liefert

Code: Alles auswählen

msiinfo export -s GoogleChromeStandaloneEnterprise.msi Component
CREATE TABLE `Component` (`Component` CHAR(72) NOT NULL, `ComponentId` CHAR(38), `Directory_` CHAR(72) NOT NULL, `Attributes` INT NOT NULL, `Condition` CHAR(255), `KeyPath` CHAR(72) PRIMARY KEY `Component`)
INSERT INTO `Component` (`Component`, `ComponentId`, `Directory_`, `Attributes`, `KeyPath`) VALUES ('ProductClientState', '{BBD006BC-C553-3C61-A0BC-BF560606D396}', 'TARGETDIR', 4, 'NonEmptyComponent')
root@opsi6:/tmp# msiinfo export -s GoogleChromeStandaloneEnterprise64.msi Component
CREATE TABLE `Component` (`Component` CHAR(72) NOT NULL, `ComponentId` CHAR(38), `Directory_` CHAR(72) NOT NULL, `Attributes` INT NOT NULL, `Condition` CHAR(255), `KeyPath` CHAR(72) PRIMARY KEY `Component`)
INSERT INTO `Component` (`Component`, `ComponentId`, `Directory_`, `Attributes`, `KeyPath`) VALUES ('ProductClientState', '{CF96AAAE-85FF-3621-8D4C-C60F91F8F281}', 'TARGETDIR', 4, 'NonEmptyComponent')

das gewuenschte.

Es sieht mir aber so aus, dass dies keine generelle Loesung ist.


Gruss
Bardo Wolf


OPSICONF 2024
https://opsi.org/en/opsiconf/

opsi-Basisworkshops:

22. - 25. 04. 2024


opsi support - uib gmbh
For productive opsi installations we recommend maintainance + support contracts which are the base of opsi development.

http://www.uib.de
holgerv
Beiträge: 288
Registriert: 20 Aug 2012, 09:35

Re: MSI-ID auslesen (auf Linux-System)

Beitrag von holgerv »

Auf Anhieb haben die Vorschläge bei vielen, aber nicht bei allen unserer MSIs funktioniert.

Die "msitools" kannte ich noch gar nicht, das sieht vielversprechend aus ... muss ich mir aber noch genauer ansehen.

Erstmal vielen Dank für eure Antworten!


Holger
Antworten