AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MSI Installationsverzeichnis

Ein Thema von Jelly · begonnen am 3. Apr 2005 · letzter Beitrag vom 7. Apr 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#1

MSI Installationsverzeichnis

  Alt 3. Apr 2005, 23:21
Ich hab das Problem, daß ich hrausfinden muss, in welchem Verzeichnis sich eine vie MSI Paket installierte Software eingenistet hab. In der Registry finde ich zwar auf meinem Rechner einen entsprechenden GUID Eintrag, jedoch ist der auf meinem Laptop nicht der gleiche Schlüssel. Folglich kann ich diesen Weg nicht einschlagen. Gibts da noch andere Möglichkeiten, wennmöglich nicht programmtechnischer Natur. Am liebsten wär mir eine Suche in der Registry oder nach einer INI Datei im Windows Ordner. Nur weiss ich nicht so recht, wo ich anfangen soll...

Ausserdem würd mich interessieren, wie ich ohne über Control Panel/Add Software zu gehen, eine MSI Installation wieder zu deinstallieren. Dieses Problem ist aber nur zweitrangig, wär aber trotzdem schön, es programmtechnisch lösen zu können.

Ein gescheiter Link zu MSI Paketen überhaupt würd mir auch schon helfen.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#2

Re: MSI Installationsverzeichnis

  Alt 4. Apr 2005, 09:57
Zitat von Jelly:
Ich hab das Problem, daß ich hrausfinden muss, in welchem Verzeichnis sich eine vie MSI Paket installierte Software eingenistet hab.
Die Sache ist die, dass die eigentlichen Dateien deiner Anwendung (bzw. irgendeiner Anwendung) meist in einem Ordner unter "Programme" landen, usw., während die MSI-Datei in einem der Windows-Ordner gesichert wird. Auf die Weise wird nämlich später der Wartungs- bzw. Deinstallationsmodus aufgerufen. Wenn du also einfach nur den "UninstallString" auslesen würdest, wäre es denkbar, dass du den Pfad zur MSI-Datei erhältst, dass aber die Programmdateien woanders liegen. Ich bin gerade am Überlegen ... ... Es gibt die Möglichkeit, den Speicherort einzelner Programmkomponenten zu ermitteln. Das heißt, man kann ganz gezielt den Pfad der Exe anzeigen lassen, usw. Dafür müsstest du dich mal mit dem MSI-API vertraut machen.

Zitat:
In der Registry finde ich zwar auf meinem Rechner einen entsprechenden GUID Eintrag, jedoch ist der auf meinem Laptop nicht der gleiche Schlüssel. Folglich kann ich diesen Weg nicht einschlagen.
Noch mal langsam: du installierst ein Programm einmal auf einem Rechner und einmal auf einem Laptop, und die GUID ist anders? Das kann nicht sein, denn die GUIDs sind fest in der MSI-Datei vorgegeben und werden nicht verändert. Nicht während der Installation, meine ich. Du kannst sie natürlich jederzeit ändern, aber der Installer macht das nicht von sich aus.

Zitat:
Ausserdem würd mich interessieren, wie ich ohne über Control Panel/Add Software zu gehen, eine MSI Installation wieder zu deinstallieren. Dieses Problem ist aber nur zweitrangig, wär aber trotzdem schön, es programmtechnisch lösen zu können.
Code:
msiexec /x MSI-Datei
msiexec /x ProductCode
Zitat:
Ein gescheiter Link zu MSI Paketen überhaupt würd mir auch schon helfen.
Microsofts MSDN, Platform SDK, oder (sofern überhaupt noch einzeln verfügbar) MSI-SDK. Wenn du das PSDK installiert hast bzw. installieren willst, lass dir die Beispiele und Dateien zum MSI auch installieren.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#3

Re: MSI Installationsverzeichnis

  Alt 4. Apr 2005, 11:34
das installationsverzeichnis kannst du nur ermitteln wenn du den produktcode hast.
mit diesen gehst du dann auf die installapi los.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#4

Re: MSI Installationsverzeichnis

  Alt 4. Apr 2005, 11:36
Also schon mal vielen Dank für den Einblick.

Zitat von MathiasSimmack:
Noch mal langsam: du installierst ein Programm einmal auf einem Rechner und einmal auf einem Laptop, und die GUID ist anders? Das kann nicht sein, denn die GUIDs sind fest in der MSI-Datei vorgegeben und werden nicht verändert. Nicht während der Installation, meine ich. Du kannst sie natürlich jederzeit ändern, aber der Installer macht das nicht von sich aus.
Also, auf meinem Rechner liegt der Schlüssel in der Registry unter Folgendem:

software\Microsoft\Windows\CurrentVersion\Installe r\UserData\S-1-5-21-1957994488-1202660629-1060284298-1003\Components\056950F63FC8C9D48A9758FAD41F5564

darunter liegt der Wert CC314286DC79C2E44A10DC8653F299D9=c:\programme\...

Die GUIDs an sich bleiben auch auf beiden Rechnern unverändert, aber der Teil den ich blau markiert habe aber nicht. Soweit ich weiss ist dies bei jeder neuen Windows Installation anders. Hatte mal ein ähnliches Problem unter Windows2000 Server, da wurde die ganze AD Struktur bei jeder neuen Installation unter neuen GUIDS gespeichert.

Naja, ich mach mich mal auf in die MSDN.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#5

Re: MSI Installationsverzeichnis

  Alt 4. Apr 2005, 11:37
Zitat von generic:
das installationsverzeichnis kannst du nur ermitteln wenn du den produktcode hast.
mit diesen gehst du dann auf die installapi los.
Den hab ich... Kannst du noch bischen näher erläutern, wie ich das dann anstellen kann.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#6

Re: MSI Installationsverzeichnis

  Alt 4. Apr 2005, 17:15
schau dir mal im install sdk die dokumentation zu "MsiGetProductInfoEx" an.

"INSTALLPROPERTY_INSTALLLOCATION"


Zitat:
MsiGetProductInfo
The MsiGetProductInfo function returns product information for published and installed products.

UINT MsiGetProductInfo(
LPCTSTR szProduct,
LPCTSTR szProperty,
LPTSTR lpValueBuf,
DWORD* pcchValueBuf
);

Parameters
szProduct
[in] Specifies the product code for the product.
szProperty
[in] Specifies the property to be retrieved. The properties in the following list can only be retrieved from applications that are already installed. Note that required properties are guaranteed to be available, but other properties are available only if that property has been set. See the indicated links to the installer properties for information about how each property is set.Installed properties Meaning
INSTALLPROPERTY_HELPLINK Support link. See ARPHELPLINK property.
INSTALLPROPERTY_HELPTELEPHONE Support telephone. See ARPHELPTELEPHONE property.
INSTALLPROPERTY_INSTALLDATE Installation date.
INSTALLPROPERTY_INSTALLEDPRODUCTNAME Installed product name. See ProductName property.
INSTALLPROPERTY_INSTALLLOCATION Installation location. See ARPINSTALLLOCATION property.
INSTALLPROPERTY_INSTALLSOURCE Installation source. See SourceDir property.
INSTALLPROPERTY_LOCALPACKAGE Local cached package.
INSTALLPROPERTY_PUBLISHER Publisher. See Manufacturer property.
INSTALLPROPERTY_URLINFOABOUT URL information. See ARPURLINFOABOUT property.
INSTALLPROPERTY_URLUPDATEINFO URL update information. See ARPURLUPDATEINFO property.
INSTALLPROPERTY_VERSIONMINOR Minor product version derived from ProductVersion property.
INSTALLPROPERTY_VERSIONMAJOR Major product version derived from ProductVersion property.
INSTALLPROPERTY_VERSIONSTRING Product version. For more information, see ProductVersion property.

To retrieve the product ID, registered owner, or registered company from applications that are already installed, set szProperty to one of the following text string values. Value Description
ProductID The product identifier for the product. See ProductID Property.
RegCompany The company registered to use this product.
RegOwner The owner registered to use this product.



To retrieve the instance type of the product, set szProperty to the following value. This property is available for advertised or installed products.

Value Description
InstanceType A missing value or a value of 0 indicates a normal product installation. A value of 1 indicates a product installed using a multiple instance transform and the MSINEWINSTANCE property. Available with the installer running Windows Server 2003 family or Windows XP SP1. For more information see, Installing Multiple Instances of Products and Patches.


The properties in the following list can also be retrieved from applications that are advertised.

Advertised properties Description
INSTALLPROPERTY_TRANSFORMS Transforms.
INSTALLPROPERTY_LANGUAGE Product language.
INSTALLPROPERTY_PRODUCTNAME Human readable product name. See ProductName property.
INSTALLPROPERTY_ASSIGNMENTTYPE Equals zero (0) if the product is advertised or installed per-user.
Equals one (1) if the product is advertised or installed per-machine for all users.

INSTALLPROPERTY_PACKAGECODE Identifier of the package this product was installed from. For details, see Package Codes.
INSTALLPROPERTY_VERSION Product version derived from ProductVersion property.
INSTALLPROPERTY_PRODUCTICON Primary icon for the package. For details, see ARPPRODUCTICON property.
INSTALLPROPERTY_PACKAGENAME Name of the original installation package.


lpValueBuf
[out] Pointer to a buffer that receives the property value. This parameter can be null.
pcchValueBuf
[in, out] Pointer to a variable that specifies the size, in characters, of the buffer pointed to by the lpValueBuf parameter. On input, this is the full size of the buffer, including a space for a terminating null character. If the buffer passed in is too small, the count returned does not include the terminating null character.
If lpValueBuf is null, pcchValueBuf can be null.

Return Values
Value Meaning
ERROR_BAD_CONFIGURATION The configuration data is corrupt.
ERROR_INVALID_PARAMETER An invalid parameter was passed to the function.
ERROR_MORE_DATA A buffer is too small to hold the requested data.
ERROR_SUCCESS The function completed successfully.
ERROR_UNKNOWN_PRODUCT The product is unadvertised or uninstalled.
ERROR_UNKNOWN_PROPERTY The property is unrecognized.




Remarks
When the MsiGetProductInfo function returns, the pcchValueBuf parameter contains the length of the string stored in the buffer. The count returned does not include the terminating null character. If the buffer is not big enough, MsiGetProductInfo returns ERROR_MORE_DATA, and MsiGetProductInfo contains the size of the string, in characters, without counting the null character.

MsiGetProductInfo(INSTALLPROPERTY_LOCALPACKAGE) does not necessarily return a path to the cached package. The cached package is for internal use only. Maintenance mode installations should be invoked through the MsiConfigureFeature, MsiConfigureProduct, or MsiConfigureProductEx functions.

Requirements
Client: Requires Windows XP, Windows 2000 Professional, or Windows Me.
Server: Requires Windows Server 2003 or Windows 2000 Server.
Redistributable: Requires Windows Installer 1.0 or later on Windows NT 4.0 SP3 and Windows 98/95.
Unicode: Implemented as MsiGetProductInfoW(Unicode) and MsiGetProductInfoA(ANSI).
Header: Declared in Msi.h.
Library: Use Msi.lib.
DLL: msi.dll
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#7

Re: MSI Installationsverzeichnis

  Alt 4. Apr 2005, 21:51
Mit der ganzen API kann ich nur leider nicht soviel anfangen. Es geht in meinem Problem darum, daß ich in einem Projekt ein anderes Installationssystem verwende, als eben vorher Installshield Express, das mir ein MSI Paket erstellte. In dem neuen Programm kann ich aber keine API Befehle aufrufen, sondern im Groben nur Werte aus der Registry oder INI Dateien lesen, und im Setup verwenden...

Naja, trotzdem vielen Dank... Werde versuchen das Problem anders zu lösen.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#8

Re: MSI Installationsverzeichnis

  Alt 7. Apr 2005, 14:25
ob du auf der registry liest oder eine tlb vom windowsinstaller einliest und 3 funktion aufrufst macht glaube nicht nicht den grossen unterschied.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#9

Re: MSI Installationsverzeichnis

  Alt 7. Apr 2005, 14:30
Ich wollt aber im Setuptool auf das Verzeichnis zugreifen können, und nicht aus meinem Delphi Programm raus. Mein Installationstool kann im Groben aber nur aus Registry und INIDateien Werte rausziehen. Eine Benutzer DLL kann ich zwar auch einbinden, das ist mir aber jetzt zu aufwendig da ich mich da an gewissen Strukturen halten muss, damit das Setuptool auch damit klar kommt. Das ist mir aber zu aufwendig im Vergleich zu dem Nutzen das es mir bringt.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#10

Re: MSI Installationsverzeichnis

  Alt 7. Apr 2005, 15:49
Das ist aber ein ziemlich einschränkendes Setuptool, oder?
Wie heißt es denn? Und: Kannst du es evtl. wechseln?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz