Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Fehler 1312 bei Update.exe


2 replies to this topic

wernerf

wernerf
  • Members
  • 22 posts

Posted 19 February 2004 - 18:24

ISDev 7.04 unter Win XP:

Ich kämpfe immer noch mit einem Problem, bei dem ich ein "Small Update" in Form eines Patches anhand eines kleinen Testprojektes
teste. Begonnen habe ich mit einem kleinen Projekt mit 2 oder 3 Dateien als Produktversion 1.00.0000.
Das fertige Projekt wurde dann unter einem neuen Namen abgespeichert, der Paketcode wurde angepasst, die Produktversion auf 1.01.0000
fesetzt, und einige der zu installierenden Dateien modifiziert (z.B. wurde die Version des zu installierenden EXE-Files
erhöht). Weiterhin wurde im 1.01-Projekt ein Feature ergänzt, dem eine neu erstellte Komponent zugeordnet wurde. In dieser Komponente
wurde eine neu zu installierende Datei definiert. Zielordner dieser neuen Komponente, die durch den Patch ergänt werden soll,
war zunächst [INSTALLDIR].

Alles lief zunächst wie am Schnürchen, der Patch konnte ohne Probleme auf die 1.00.0000-Installation angewendet werden, und
brachte die Anwendung korrekt auf den Stand 1.01.0000.

Aber dann modifizierte ich das 1.01-Projekt dahingehend, dass als Zielordner nicht mehr [INSTALLDIR], sondern der neue Ordner
[INSTALLDIR]\patch eingetragen wurde! Danach wurde der Patch neu erzeugt.
Die Anwendung wurde deinstalliert, mit Stand 1.00.0000 neu installiert und der neu erzeugte Patch angewendet.

Dierser Versuch endet seitdem hartnäckig mit einer Fehlermeldung 1312 mad.gif :

Fehler 1312. Ordner "C:\DOKUME~1\FANGME~1\LOKALE~1\Temp\_is562\Patch110.msp" kann nicht erstellt werden.
Eine Datei mit diesem Namen existiert bereits. Bitte benennen Sie die Datei um oder entfernen Sie die Datei,
und klicken Sie dann auf "Wiederholen". Oder klicken Sie auf "Abbrechen", um das Programm zu beenden.

"Patch110.msp" ist der Name des in Update.exe eingebetteten Patchpaketes, welches zur laufzeit temporär in
den Supportfolder extrahiert wird (nehme ich an); aber warum will der installer ein gleichnamiges Verzeichnis erzeugen?

Wie gesagt, das Problem scheint davon abzuhängen, welches Zielverzeichnis für die neue Komponente angegeben
wird; sobald dies ein neuer Unterordner des [INSTALLDIR] ist, gibt es Probleme.

Hier ein Auszug aus dem Log:

<Anfang Logauszug>
...
MSI (s) (DC:34): Executing op: SetTargetFolder(Folder=C:\Programme\ESN GmbH\StdTestPrj1\bin\)
MSI (s) (DC:34): Executing op: SetSourceFolder(Folder=1\PROGRA~1\ESNGMB~1\STDTES~1\bin\|program files\ESN GmbH\StdTestPrj1\bin\)
MSI (s) (DC:34): Executing op: ChangeMedia(,MediaPrompt=Bitte legen Sie den Datenträger ein: ,MediaCabinet=PCW_CAB_Family00,BytesPerTick=32768,CopierType=2,ModuleFileName=C:\DOKUME~1\FANGME~1\LOKALE~1\Temp\_is562\Patch110.msp,,,,,IsFirstPhysicalMedia=0)
MSI (s) (DC:34): Executing op: FileCopy(SourceName=notepad.exe,SourceCabKey=notepad.exe,DestName=notepad.exe,Attributes=4096, FileSize=46352,PerTick=32768,,VerifyMedia=1,,,,,CheckCRC=0,Version=4.1.1372.1,Language=1031, InstallMode=58982400,,,,,,)
MSI (s) (DC:34): File: C:\Programme\ESN GmbH\StdTestPrj1\bin\notepad.exe; Overwrite; No patch; Existing file is a lower version
MSI (s) (DC:34): Source for file 'notepad.exe' is compressed
InstallFiles: File: notepad.exe, Directory: C:\Programme\ESN GmbH\StdTestPrj1\bin\, Size: 46352
MSI (s) (DC:34): Re-applying security from existing file.
MSI (s) (DC:34): Verifying accessibility of file: notepad.exe
MSI (s) (DC:34): SOFTWARE RESTRICTION POLICY: Verifying object --> 'C:\DOKUME~1\FANGME~1\LOKALE~1\Temp\_is562\Patch110.msp' against software restriction policy
MSI (s) (DC:34): Note: 1: 2262 2: DigitalSignature 3: -2147287038
MSI (s) (DC:34): SOFTWARE RESTRICTION POLICY: C:\DOKUME~1\FANGME~1\LOKALE~1\Temp\_is562\Patch110.msp is not digitally signed
MSI (s) (DC:34): SOFTWARE RESTRICTION POLICY: C:\DOKUME~1\FANGME~1\LOKALE~1\Temp\_is562\Patch110.msp is permitted to run at the 'unrestricted' authorization level.
MSI (s) (DC:34): Note: 1: 2318 2: C:\Programme\ESN GmbH\StdTestPrj1\bin\notepad.exe
MSI (s) (DC:34): Note: 1: 2360
MSI (s) (DC:34): Executing op: SetTargetFolder(Folder=C:\DOKUME~1\FANGME~1\LOKALE~1\Temp\_is562\Patch110.msp\)
MSI (s) (DC:34): Executing op: SetSourceFolder(Folder=1\PROGRA~1\ESNGMB~1\STDTES~1\patch\|program files\ESN GmbH\StdTestPrj1\patch\)
MSI (s) (DC:34): Executing op: FileCopy(SourceName=Patch_1.txt,SourceCabKey=Patch_1.txt,DestName=Patch_1.txt,Attributes=4096,FileSize=27,PerTick=32768,,VerifyMedia=1,,,,,CheckCRC=0,,,InstallMode=58982400,HashOptions=0,HashPart1=156467495,HashPart2=-116141
2374,HashPart3=-1691012192,HashPart4=-137314480,)
MSI (s) (DC:34): File: C:\DOKUME~1\FANGME~1\LOKALE~1\Temp\_is562\Patch110.msp\Patch_1.txt; To be installed; No patch; No existing file
MSI (s) (DC:34): Source for file 'Patch_1.txt' is compressed
InstallFiles: File: Patch_1.txt, Directory: C:\DOKUME~1\FANGME~1\LOKALE~1\Temp\_is562\Patch110.msp\, Size: 27
MSI (s) (DC:34): Note: 1: 1312 2: C:\DOKUME~1\FANGME~1\LOKALE~1\Temp\_is562\Patch110.msp
Fehler 1312. Ordner "C:\DOKUME~1\FANGME~1\LOKALE~1\Temp\_is562\Patch110.msp" kann nicht erstellt werden. Eine Datei mit diesem Namen existiert bereits. Bitte benennen Sie die Datei um oder entfernen Sie die Datei, und klicken Sie dann auf "Wiederholen". Oder klicken Sie auf "Abbrechen", um das Programm zu beenden.
Sind Sie sicher, dass Sie abbrechen möchten?
Aktion beendet um 15:52:39: InstallFinalize. Rückgabewert 2.
MSI (s) (DC:34): User policy value 'DisableRollback' is 0
...
<Ende Logauszug>

Hat irgendjemand Erfahrung mit diesem Effekt, oder erkennt jemand grobe fehler in meinem Vorgehen?

Es ist traurig, dass "Small Updates" scheinbar noch nicht einmal mit einem Spielzeugprojekt zu laufen scheinen. Das wäre ja nicht so schlim, wenn wenigstens "Major Upgrades" funktionieren würden, aber da gibt es ja das berühmte "Rollback-Problem", welches dazu führt, dass bestimmte Systemänderungen beim "Fertigstellen" wieder zurückgenommen werden (die KB-Nummer habe ich gerade nicht parat). Und ich rede noch nicht einmal über das Patchen von "multiple versions" (also Patchen gepatchter Anwendungen); dass sowas klappt, wage ich schon nicht mal mehr zu träumen...

Also - momentan scheint weder Patching noch Upgrading richtig zu funktionieren´. Und das beim Marktführer ... ist denn das Aktualisieren von Anwendungen so ein exotisches Problem? Viele der Probleme rund ums Patching und Upgrading scheinen ja noch nicht einmal im DevStudio9 erledigt zu sein.

Danke für alle Anregungen und Ideen.

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 19 February 2004 - 19:25

Verwirrend huh.gif
Kannst du bitte folgendes probieren:
1. Test auf einem sauberen System (also frisches Image, ohne vorher andere Versionen und Patches zu installieren und zu deinstallieren)
2. Gib das Unterverzeichnis ohne Backslash an: [INSTALLDIR]patch (Directories enden automatisch in einem Backslash, d.h. du hast hier evtl. einen doppelten Backslash)
3. Verwende einen "unverfänglichen" Namen für das Unterverzeichnis, nicht ausgerechnet "patch", sondern z.B [INSTALLDIR]test

Ich weiss nocht, ob das hilft, aber es schließt ein paar potentielle Fehlerursachen aus.

wernerf

wernerf
  • Members
  • 22 posts

Posted 20 February 2004 - 10:41

Danke für den wirklich guten Tip, das neue Verzeichnis nicht ausgerechnet "patch" zu nennen! tongue.gif

Das Zielverzeichmnis der neuen Komponente war festgelegt als "[INSTALLDIR]patch" (also ohne Backslash, den hatte ich nur in dem Posting versehentlich eingetippt); nachdem ich ihn jetzt auf "[INSTALLDIR]patches" geändert und den Patch neu generiert habe, scheint das Update durchzulaufen! Ein erster Blick zeigt, dass sowohl das Unterverzeichnis "patches" als auch die Datei "Patch_1.txt" darin korrekt angelegt wurden. Auch die anderen Dateien wurden scheinbar korrekt aktualisiert.

Man sieht auch im Logfile, dass der Verzeichnisname "patch" den Installer völlig durcheinanderbringt:

Logeintrag für Version mit Zielverzeichnis "patch":

File: C:\DOKUME~1\FANGME~1\LOKALE~1\Temp\_is34E3\p101.msp\Patch_1.txt; To be installed; No patch; No existing file

Logeintrag für Version mit Zielverzeichnis "patches":

File: C:\Programme\ESN GmbH\StdTestPrj1\patches\Patch_1.txt; To be installed; No patch; No existing file

Auch für alle anderen Dateien lautet der angegebene Pfad "C:\Programme\ESN GmbH\StdTestPrj1\<Verzeichnis>\<Dateiname>". Nur bei "patch" taucht plötzlich der Supportfolder "C:\DOKUME~1\FANGME~1\LOKALE~1\Temp\_is34E3" auf.

Offensichtlich ist "patch" so etwas wie ein reservierter Name, der für das MSP-Paket steht; Hier ist also Vorsicht geboten, den wer weiss, welche Namen in diesem Sinne noch "reserviert" sind und zu massiven Problemen führen würden!

Dieses (Teil-)Problem scheint also zunächst einmal gelöst; als nächstes wird es darum gehen, einen Patch zu entwerfen, der sowohl eine 1.00 als auch eine 1.01-Installation auf den Stand 1.02 bringen kann. Mit 7.0x ist mir das bei "richtigen" Projekten bisher noch nicht gelungen, mal sehen, wie sich die "Spielzeugprojekte" verhalten. Allein die Verwirrung, die über das richtige Setzen der Versionsbeziehungen herrscht, ist bezeichnend: die Logik sagt: Neue Version >= Alte Version, InstallShield sagt: wegen eines Fehlers in ISDev 7.x (oh Wunder!) muss eingestellt werden: Neue Version <= Alte Version; funktionieren tut dann meist keines von beiden.

Nocheinmal: Vielen Dank für den wertvollen Tip!