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

SetupProgress Dialog ansteuern ?!


8 replies to this topic

fiversen

fiversen
  • Full Members
  • 18 posts

Posted 02 February 2011 - 16:46

Hallo,

ich habe ein BasicMSI-Projekt.

Ich installiere meine Files und mache dann in abschliessenden script-Funktionen
noch eine Menge an Sachen, die auch Zeit benötigen.

Die ganze Zeit ist der SetupProgress Dialog noch zu sehen.

Kann ich im Status-Text 'LbStatus' meine Status Meldungen anzeigen ?

Dazu muss ich irgendwie auf den Dialog zugreifen und dann noch
auf das Status-Feld !


Alternativ dazu habe ich schon versucht:
Enable(STATUS);
...
SetStatus(...);

oder
Enable(STATUSDLG);
...
SetStatus(...);

Aber da erschien nichts auf der Oberfläche.

----
So long
Frank Iversen


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 02 February 2011 - 18:10

Der STATUSDLG ist nur für InstallScript.

Wenn es sich um Custom Actions handelt und diese deferred ausgeführt werden zwischen InstallInitialize und InstallFinalize (was sie sollten wenn sie was am System ändern) dann genügt ein Eintrag in der Tabell ActionText im DirectEditor: Name der Custom Action und Text der angezeigt werden soll.

fiversen

fiversen
  • Full Members
  • 18 posts

Posted 03 February 2011 - 10:32

Das geht leider nicht,
da die installierten Files erst nach InstallFinalize zur Verfügung stehen.

Dann modifiziere ich Files und starte auch programmeigene
Datenbank-Befehle.

Bisher hab ich die cmd-Windows angezeigt die die Befehle ausführen;
nun wollte ich etwas gescheiteres machen - ohne zusätzliche User-Interaktion -
aber das ist wohl nicht so einfach.

---
Frank


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 03 February 2011 - 11:37

Die Dateien stehen nach InstallFiles zur Verfügung. Allerdings nur wenn die Custom Action "deferred" ist, nicht "immediate". Warum das so ist, habe ich hier beschrieben: http://www.installsi...00108/index.htm


fiversen

fiversen
  • Full Members
  • 18 posts

Posted 03 February 2011 - 15:49

Das hat jetzt prima funktioniert:

ich habe also meine InstallScript Funktionen unabhängig von einander gemacht und
sie in der Installationssequenze reingehängt:
...
InstallFiles
WhichRole
ServerInstallation mit Bedingung: ROLECOMBO=1
ClientInstallation mit Bedingung: ROLECOMBO>1
...

ROLECOMBO ist eine Property, die ich in einem eigenen Dialog setze.

Und zu den einzelnen Funktionen setze ich den Text via ActionText.

In den Funktionen kann ich auf die Properties des EigenschaftsManagers
nicht zugreifen,
aber bei den Bedingungen klappt es.

Ich habe nun 10 verschiedene Rollen, müsste also 10 Funktionen schreiben,
da ich in ClientInstallation nicht auf die Property zugreifen kann.

Wenn es noch irgendwie geht - ist es schön, sonst mache ich es mit
10 Funktionen.

Danke.
---
Frank

man doch der Funktion diese Informatio


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 03 February 2011 - 17:30

Es geht auf dem Umweg über CustomActionData.

fiversen

fiversen
  • Full Members
  • 18 posts

Posted 10 February 2011 - 16:20

Ich bin jetzt schon ordentlich weiter:

ich habe dereffered custom functionen im script;

den Status zeige ich im Process-Dialog an,

die notwendigen Parameter mach ich ueber die CustomActionData.

Jetzt will ich, bei meiner Client-Installation,
Programme auf meinem Server-Rechner starten.

Das mache ich per Psexec.exe.

Auf einer eine Console von meinem ClientRechner,
klappt das:

psexec.exe -u User -p Passwort -s -w c:\usr\MyPrg\work.srv cmd /C myProg.exe
data.xml


Dasgleich in einer Script-Funktion fuehrt zum Fehler:
LaunchAppAndWait ("psexec.exe",
" -u User -p Passwort -s -w c:\usr\MyPrg\work.srv" +
" cmd /C myProg.exe data.xml", WAIT);

Da meldet Psexec immer "Couldn't access Torex01: Zugriff verweigert".

Ich habe einfach in die Script-Funktion
LaunchAppAndWait("cmd.exe", "", WAIT);
eingebaut und kann dann einiges probieren - ohne Erfolg.

Ich habe ein wenig die Vermutung, das es an der verzoegerten Ausfuehrung
liegt.

Fuer eine Hilfe waere ich dankbar.
---
Frank




Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 10 February 2011 - 17:25

Deferred execution läuft im Kontext des angemeldeten Users, ohne Admin-Rechte
Deferred execution in system context läuft im SYSTEM-Konto mit Admin-Rechten.
Vielleicht liegt es daran?

Ich nehme an es ist nur ein Schreibfehler im Forum-Post, aber:
c:\usr\MyPrg\work.srv
muss im InstallScript als:
c:\\usr\\MyPrg\\work.srv
geschrieben werden

fiversen

fiversen
  • Full Members
  • 18 posts

Posted 17 February 2011 - 13:46

Hallo,

bei den dereffered functionen klappt es mit dem mapping,
wenn man es nicht im System-Kontext, sondern nur verzoegert macht.

Nun habe ich aber noch ein Problem:
Ich starte oft um die Dinge zu regeln: LaunchAppAndWait("cmd.exe", "/C ....", WAIT);

Das klappt auch, nur starte dann immer ein Consolen-Window, das so gross ist,
das es das InstallShield-Fenster ueberdeckt.

Auch die Schalter '/Q' oder
'mode con cols=5 lines=40' machen das Teil nicht kleiner ?!

Nun würde ich gerne zudem Text im ProcessDialog anzeigen und die Progressbar
steuern.

Dazu fand ich auch ein Beispiel:

hActionRec = MsiCreateRecord(6);

MsiRecordSetString(hActionRec, 1, "1 ServerInstallation");
MsiRecordSetString(hActionRec, 2, "2 Incrementing the Progress Bar...");
MsiRecordSetString(hActionRec, 3, "3 item");
MsiRecordSetString(hActionRec, 4, "4 item");
MsiRecordSetString(hActionRec, 5, "5 item");
MsiRecordSetString(hActionRec, 6, "6 item");
iResult = MsiProcessMessage(hInstall, INSTALLMESSAGE_ACTIONSTART, hActionRec);
if ((iResult == IDCANCEL)) then
return ERROR_INSTALL_USEREXIT;
endif;
...

Der ActionText wird mit '2 Incrementing the Progress Bar..' veraendert,
aber einen zusaetzlichen Text 'DetailText' im Dialog bleibt unveraendert.
Das Teil ist das 6.Control im Dialog - aber die Logik bei der Nummerierung durchschaue
ich nicht.

---
Frank Iversen