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

SdAskDestPath Problem


1 reply to this topic

bernard

bernard
  • Full Members
  • 127 posts

Posted 05 May 2011 - 11:50

Habe InstallShield 2011 - Professional Edition (Version 17)

Habe Test PC mit
VirtualMachine -> XP HE (+SP3)

In einem InstallScript (ohne MSI) Projekt führe ich aus:
...
nResult = SdAskDestPath("", "", szvTargetDir, 0);
Trace("SelectDestPath() szvTargetDir [%s]\n",szvTargetDir);
...
if Is(VALID_PATH, szvTargetDir) then
Trace("RunInstall: - The path is a legal path. [%s]\n", szvTargetDir);
else
SetDialogTitle(DLG_MSG_SEVERE,"Setup XXXX");
MessageBox (" RunInstall: The path " + szvTargetDir + " is not a legal path.", SEVERE);
Trace("RunInstall: - The path is not a legal path. [%s]\n", szvTargetDir);
endif;

if !Is(PATH_EXISTS, szvTargetDir) then
if (CreateDir(szvTargetDir) < 0) then
SetDialogTitle(DLG_MSG_SEVERE,"Setup XXXX");
MessageBox (" RunInstall: Unable to create directory " + szvTargetDir + "\nThe specified folder is invalid.", SEVERE);
Trace("RunInstall: Unable to create directory [%s]\n", szvTargetDir);
else
Trace("RunInstall: CreateDir(szvTargetDir) [%s]\n", szvTargetDir);
endif;
endif;
...
1. Wenn
szvTargetDir = "C: .DELTA-222";
Aus dem Trace-File:
12:09:19.266 RunInstall: - The path is a legal path. [C: .DELTA-222]
12:09:43.516 RunInstall: Unable to create directory [C: .DELTA-222]
Ist OK!

2. Wenn
szvTargetDir = "C: Programme\DELTA-222";
oder
szvTargetDir = "C:-Programme\DELTA-222";
bekomme ich ein Problem.

Aus dem Trace-File:
12:12:34.188 SelectDestPath() szvTargetDir [C:-Programme\DELTA-222]
12:12:35.781 RunInstall: - The path is a legal path. [C:-Programme\DELTA-222]

Danach kommt es kein Trace!
Und wird es
%TEMP%\-Programme\DELTA-222\
erstellt.

Brauche eine Hilfe.

Danke im Voraus


bernard

bernard
  • Full Members
  • 127 posts

Posted 09 May 2011 - 14:03

QUOTE
if !Is(PATH_EXISTS, szvTargetDir) then
  if (CreateDir(szvTargetDir) < 0) then

Die Function SdAskDestPath() erstellt sofort ein Verzeichnis!

Ich fand beim Bernd:
QUOTE
SdAskDestPath bzw. SelectDir Problem, Anlegen und löschen von Installationspfaden  2001-05-10
Hi,
ich habe folgendes Problem:
In meiner Installationsroutine soll es dem Benutzer möglich sein einen beliebigen Installationspfad angeben zu können.
Dazu verwende ich die Funktion SdAskDestPath bzw. SelectDir, das funktioniert auch problemlos.
Hat der Benutzer nun einen eigenen Pfad angegeben (z.B. C:\Programme\test ) wird dieser nach drücken des "ok-Buttons" sofort angelegt.
Dem Benutzer fällt nun aber ein, das er für die Installation eigentlich  einen anderen Pfad verwenden wollte (z.B. C:\Tools\app ).
Daher geht er in der Installation zurück und legt diesen Pfad an.
Dummerweise bleibt nach Abschluß der Installation der erste (leere) Pfad (C:\Programme\test ) erhalten und wird nicht automatisch entfernt.
Meine Frage daher wie kann man es erreichen das dieser "versehentlich" angelegte Pfad wieder gelöscht wird ?

Mein Problem habe ich so gelöst:

Statt Funktion SdAskDestPath() habe
nResult = AskPath("", szvTargetDir, sv_PathTargetDir);
z.B.
wenn Ziel="C: XXX" wird es auf "C:.\ XXX" umgesetzt,

Der Ziel Pfad szvTargetDir wird zuerst geprüft.
Werden alle <blanks> nach ":.\\", "\\.", ":\\", ":" und ":." im szvTargetDir gelöscht.
Jetzt z.B.:
Ziel="C: XXX" wird es auf "C:\XXX" umgesetzt,
oder
Ziel="C:YYY" wird es auf "C:\YYY" umgesetzt,

Und läuft alles richtig!