geänderte Datei nicht entfernen

Fragen zum AKInstallerMSI
Antworten
AKInstallerMSI_Fan_1
Beiträge: 29
Registriert: 24.09.2009, 11:20

geänderte Datei nicht entfernen

Beitrag von AKInstallerMSI_Fan_1 »

Hallo,
gibt es vielleicht als Dateieinstellungen-Attribut : "Veränderte Datei nicht deinstallieren"?
Wenn nicht, wie kriege ich sowas hin? Ich hätte gedacht vielleicht über Dateieinstellungen --> Bedingungen. Aber ich wüsste leider nicht wie.

Gruß
Andreas Kapust
Administrator
Beiträge: 1085
Registriert: 29.02.2004, 15:51
Wohnort: Hamburg
Kontaktdaten:

Re: geänderte Datei nicht entfernen

Beitrag von Andreas Kapust »

Guten Tag!

Auf welche Art von Daten bezieht es sich, falls Dateien, was für Dateien?
Mit freundlichen Grüßen,
AKApplications, Andreas Kapust
AKInstallerMSI_Fan_1
Beiträge: 29
Registriert: 24.09.2009, 11:20

Re: geänderte Datei nicht entfernen

Beitrag von AKInstallerMSI_Fan_1 »

z.B. txt-Dateien oder xml-Dateien, die bei der Installation mitinstalliert werden.
Während es mit dem Hauptprogramm gearbeitet wird, werden diese Dateien geändert. Bei der DEInstallation sollten sie nicht deinstalliert werden.
Andreas Kapust
Administrator
Beiträge: 1085
Registriert: 29.02.2004, 15:51
Wohnort: Hamburg
Kontaktdaten:

Re: geänderte Datei nicht entfernen

Beitrag von Andreas Kapust »

Datei doppelt anklicken -> Komponente -> Permanent setzen -> Ok.
Mit freundlichen Grüßen,
AKApplications, Andreas Kapust
AKInstallerMSI_Fan_1
Beiträge: 29
Registriert: 24.09.2009, 11:20

Re: geänderte Datei nicht entfernen

Beitrag von AKInstallerMSI_Fan_1 »

erstmal danke für die schnelle Antwort. Wie immer halt :)

aber ich habe leider immer noch etwas zu meckern. "Permanent" heisst ja, dass die Datei nie entfernt wird. Ich will aber dass es "parmament" sei NUR wenn die Datei sich inhaltlich geändert hat, sonst soll sie entfernt werden. Gibt´s anscheinend sowas nicht bei AKInstaller. Oder irre ich mich?
Andreas Kapust
Administrator
Beiträge: 1085
Registriert: 29.02.2004, 15:51
Wohnort: Hamburg
Kontaktdaten:

Re: geänderte Datei nicht entfernen

Beitrag von Andreas Kapust »

Guten Tag!

Nein, dass ist mit MSI-Mitteln so nicht zu regeln.
Allerdings können Sie den Funktionsumfang ja durch eine Benutzerdef. Aktion (CA) erweitern, die diese Datei bei einer Deinstallation nur löscht, wenn Erstelllungsdaum und Änderungsdatum unterschiedlich sein.
Mit freundlichen Grüßen,
AKApplications, Andreas Kapust
AKInstallerMSI_Fan_1
Beiträge: 29
Registriert: 24.09.2009, 11:20

Re: geänderte Datei nicht entfernen

Beitrag von AKInstallerMSI_Fan_1 »

gute Idee. Danke und schönes WE
AKInstallerMSI_Fan_1
Beiträge: 29
Registriert: 24.09.2009, 11:20

Re: geänderte Datei nicht entfernen

Beitrag von AKInstallerMSI_Fan_1 »

Hallo,

ich bin gerade dabei eine benutzerdefinierte Aktion anzulegen, damit bei der DeInstallation geänderte Dateien nicht entfernt werden. Es gibt leider ein paar Sachen, die mir noch nicht klar sind.

Ich gehe davon aus, dass die Einstellungen im rot markierten Bereich im Anhang so richtig sind. In "Wert" ist die geänderte Datei eingetragen.

Die Infos, die mir noch fehlen sind:
- Wo tue ich eingeben, dass die Aktion bei der Deinstallation ausgeführt werden soll und die Datei nicht entfernt werden soll, wenn das Erstellungsdatum und das Änderungsdatum unterschiedlich sind?
- Wo und wie kann das Erstellungsdatum und das Änderungsdatum verglichen werden?

Danke.
Noch eine Bemerkung: Ich habe mir ein paar andere Tools angeschaut, und es ist bei den meisten sogar standard, dass die geänderte Datei bei der Deinstallation nicht entfernt wird. Freeware "Installer2Go" hat es z.B.

Gruß
Dateianhänge
Benutzerdefinierte_Aktion.JPG
Benutzerdefinierte_Aktion.JPG (144.85 KiB) 8913 mal betrachtet
Andreas Kapust
Administrator
Beiträge: 1085
Registriert: 29.02.2004, 15:51
Wohnort: Hamburg
Kontaktdaten:

Re: geänderte Datei nicht entfernen

Beitrag von Andreas Kapust »

Guten Tag!

Die im Bild dargestellte Aktion versucht Time den Pfad von FL_1374_lam… zuzuweisen. Aber nicht der Datei das aktuelle Datumzuzuweisen.

Um das gewünschte zu bewerkstelligen müssen Sie z. B. eine CA in C schreiben, die etwa so aussieht:

Code: Alles auswählen


// Datei muss alls Permanent gekennzeichnet sein
UINT __stdcall MyCA_RemoveFile(MSIHANDLE hInstall)
	{
	MSICONDITION  m_Cond = MsiEvaluateCondition(hInstall, _T("(REMOVE<>\"\" AND  REMOVEOLDPRODUCTS=\"\")"));
	
	if(m_Cond != MSICONDITION_TRUE )
		{
		return ERROR_SUCCESS;
		}
	
	…
		MsiGetProperty(hInstall, _T("[#FL_1374.."), szMyString, &dwBuffer);
	
	if(_tsaccess(szMyString,0) != 0)
		return ERROR_SUCCESS;
	
	FILETIME ftCreationTime, ftLastWriteTime;
	GetFileTime(hFile,NULL,NULL,&ftFiletime);
	if(hFile != INVALID_HANDLE_VALUE)
		{
		GetFileTime(hFile, &ftCreationTime,NULL, &ftLastWriteTime);
		CloseHandle(hFile);
		}
	
	If(CompareFileTime(&ftCreationTime, &ftLastWriteTime) == 0)
		return ERROR_SUCCESS;
	
	DeleteFile(szMyString);
	return ERROR_SUCCESS;
	}
Wenn die Datei von MSI angelegt wird, wird diese bei der Deinstallation auch wieder entfernt.
Sie können die Datei allerdings dmit einem anderen Namen installieren und von Ihrem Programm aus eine Kopie mit dem richtigen Namen anlegen, und die Kopie ggf. durch eine CA löschen.
Mit freundlichen Grüßen,
AKApplications, Andreas Kapust
Antworten