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.
Adminrechte unter Vista im Script
Started by
bigmasa
, Jun 04 2007 10:55
7 replies to this topic
Posted 04 June 2007 - 10:55
Moin,
ich benutze IS12 und erstelle ein Basic MSI Setup ohne Setup.exe da die meisten Kunden keine Zusatzdatei haben wollen. Das Setup funktioniert unter allen Betriebsystem einwandfrei bis auf Vista natürlich.
Das das Hauptprogramm unterschiedliche Konfigurationen enthalten kann, abhängig vom Kunden, und für die Verteilung Konfigurationsdateien hinzugelegt werden können wird bei der Installation kontrolliert ob Dateien beigelegt wurden und diese ggf. genutzt.
Leider ist bei den Dateien eine INI-Datei dabei von einem Fremdanbieter welche in den Windowsfolder kopiert werden muss.
ich benutze IS12 und erstelle ein Basic MSI Setup ohne Setup.exe da die meisten Kunden keine Zusatzdatei haben wollen. Das Setup funktioniert unter allen Betriebsystem einwandfrei bis auf Vista natürlich.
Das das Hauptprogramm unterschiedliche Konfigurationen enthalten kann, abhängig vom Kunden, und für die Verteilung Konfigurationsdateien hinzugelegt werden können wird bei der Installation kontrolliert ob Dateien beigelegt wurden und diese ggf. genutzt.
Leider ist bei den Dateien eine INI-Datei dabei von einem Fremdanbieter welche in den Windowsfolder kopiert werden muss.
CODE |
//Registry anpassen mit SigPlus.ini MsiGetProperty(hMSI,"SourceDir",sSourceDir,nSize); rc = Is (FILE_EXISTS, sSourceDir ^ "my.ini"); if (rc = TRUE) then if (CopyFile (sSourceDir ^ "my.ini", WindowsFolder ^ "my.ini")< 0) then MessageBox("my.ini konnte nicht kopiert werden.", SEVERE); endif; endif; |
Die Datei kann nicht kopiert werden, da mir das Recht fehlt.
Das selbe Problem habe ich mit einer Reg-Datei ,welche Daten unter HKLM schreiben soll.
CODE |
//Registry anpassen mit My.reg rc = Is (FILE_EXISTS, sSourceDir ^ "My.reg"); if (rc = TRUE) then if (LaunchApp(WindowsFolder ^ "Regedit.exe", "/s " + sSourceDir ^ "My.reg" ) < 0) then MessageBox ("My.reg konnte nicht importiert werden",SEVERE); else Delay(2); endif; endif; |
Einstellungen:
Allgemeine Informationen --> Stream-Dateiinfo --> Adminrechte verlangen -->Ja
Release --> Erforderliche Ausführungsstufe --> Aufrufen
Advertise if Prerequisites are Elevated --> Nein
Die CA wurde bereits unter "Ausführungssequenz installieren" zwischen "Nach InstallInitialize" und "Nach InstallFinalize" eingebaut.
Weiter versuche ich den Druckerspooler über ein Script zu beenden und starten. Auch da geht es nicht unter Vista. Mit nResult = ServiceGetServiceState ("Spooler", nvServiceState); bekomme ich -1 zurück.
Kann es sein das der ein Punkt in unter der Liste von IS2008 mit dazu zwingt/bringt eine neue Version zu erwerben?
Verbesserte Unterstützung für Windows Vista, auch für InstallScript und One-Click Install Projekte.
Posted 04 June 2007 - 11:33
QUOTE |
ich benutze IS12 und erstelle ein Basic MSI Setup |
QUOTE |
DIESER BEREICH IST NICHT FÜR MSI (WINDOWS INSTALLER) PROJEKTE, auch nicht für "InstallScript MSI" |
Ich verschiebe die Frage in den Basic MSI Bereich.
Stefan Krüger
InstallSite.org twitter facebook
Posted 04 June 2007 - 11:38
Deine Custom Action muss auf "Deferred Execution is System Context" eingestellt sein - dabei ist System Context das Entscheidende. Sie muss dann zwischen InstallInitialize und InstallFinalize ausgeführt werden. Leider hast du dann keinen direkten Zugriff mehr auf die meisten Properties. Du musst testen ob das auch dein SourceDir betrifft. Notfalls musst du CustomActionData verwenden wie in der HIlfe unter "Obtaining Context Information for Deferred Execution Custom Actions" beschrieben.
Stefan Krüger
InstallSite.org twitter facebook
Posted 05 June 2007 - 09:44
Grundsätzlich funktioniert das kopieren an der Stelle. Testen konnte ich dies bis jetzt nur mit einem festen Verweis auf ein Ordner, da ich bei CustomActionData immer nur einen Leerstring gekommen und das egal was ich vorher auslese. Dabei hab ich die 4 Punkte in der Hilfe schritt für schritt ausgeführt und 1000 mal Kontrolliert.
Gibt es da keine andere Möglichkeit wie ein Setup ermitteln kann wo es sich befindet. Ich will doch bloß den Ort der MSI-Datei an der Stelle wissen, das kann doch nicht so schwer sein?!
Gibt es da keine andere Möglichkeit wie ein Setup ermitteln kann wo es sich befindet. Ich will doch bloß den Ort der MSI-Datei an der Stelle wissen, das kann doch nicht so schwer sein?!
Posted 06 June 2007 - 23:13
QUOTE |
Dabei hab ich die 4 Punkte in der Hilfe schritt für schritt ausgeführt und 1000 mal Kontrolliert. |
Beschreib deine Einstellungen doch mal hier genau. Irgendwo muss da ein Problem sein wenn bei dir CustomActionData nicht funktioniert.
Stefan Krüger
InstallSite.org twitter facebook
Posted 07 June 2007 - 07:05
Das Problem hat sich teilweise erledigt.
Ich kann zwar [SourceDir] nicht als CustumActionData nutzen aber zumindest [INSTALLDIR] und während der Verzögerung kann ich den ProductCode auslesen.
Somit kopiere ich alle mitgelieferten Dateien in "temp\ProductCode" und anschließend in der Verzögerung dann an die stellen wo ich die hingehören. Dann funktioniert das auch ohne Probleme unter Vista.
Den Drucker habe ich übrigens auch mit einer Verzögerung zum laufen bekommen. Jetzt läuft der unter XP, 2003 und Vista, nur unter w2k läßt der sich nicht vom Script wieder starten, aber da kommt dann eine Meldung mit der Aufforderung manuell zu starten oder zu rebooten.
Ich kann zwar [SourceDir] nicht als CustumActionData nutzen aber zumindest [INSTALLDIR] und während der Verzögerung kann ich den ProductCode auslesen.
Somit kopiere ich alle mitgelieferten Dateien in "temp\ProductCode" und anschließend in der Verzögerung dann an die stellen wo ich die hingehören. Dann funktioniert das auch ohne Probleme unter Vista.
Den Drucker habe ich übrigens auch mit einer Verzögerung zum laufen bekommen. Jetzt läuft der unter XP, 2003 und Vista, nur unter w2k läßt der sich nicht vom Script wieder starten, aber da kommt dann eine Meldung mit der Aufforderung manuell zu starten oder zu rebooten.
Edited by bigmasa, 07 June 2007 - 07:06.
Posted 18 September 2007 - 12:45
Hi,
ich habe ein ähnliches Problem, ich möchte auch von SourceDir nach irgendwo hin rzesd kopierrn, das klaptt auch trotz eingeschalter UAC in Vista. Wenn ich aber kein echter"Administator" bin, kopiert er in meiner CustomAction (Installscript s.u.) nur neue Dateien nach [INSTALLDIR] und wenn welche schon vorhanden sind (im Ziel) werden diese nicht aktualisiert.
Ich dachte auch mit CustumActionData vielleicht was zu machen, ich finde aber nicht wo und wie man das einsetzt, habt Ihr mir da ein paar Tipps oder Bsp wie meine Custom Action so läuft ?
function MyFunction(hMSI)
begin
CopyFile (SourceDir ^ "all.ini", INSTALLDIR ^ "all.ini");
CopyFile (SourceDir ^ "all1.ini", INSTALLDIR ^ "all1.ini");
end;
usw.
Danke und Gruß
Günne
ich habe ein ähnliches Problem, ich möchte auch von SourceDir nach irgendwo hin rzesd kopierrn, das klaptt auch trotz eingeschalter UAC in Vista. Wenn ich aber kein echter"Administator" bin, kopiert er in meiner CustomAction (Installscript s.u.) nur neue Dateien nach [INSTALLDIR] und wenn welche schon vorhanden sind (im Ziel) werden diese nicht aktualisiert.
Ich dachte auch mit CustumActionData vielleicht was zu machen, ich finde aber nicht wo und wie man das einsetzt, habt Ihr mir da ein paar Tipps oder Bsp wie meine Custom Action so läuft ?
function MyFunction(hMSI)
begin
CopyFile (SourceDir ^ "all.ini", INSTALLDIR ^ "all.ini");
CopyFile (SourceDir ^ "all1.ini", INSTALLDIR ^ "all1.ini");
end;
usw.
Danke und Gruß
Günne
Posted 20 September 2007 - 07:29
Ich versteh die Frage nicht so ganz, aber mit dem ProcessMonitor von SysInternals müsstest du ein Rechteproblem erkennen können.
Warum verwendest du zum Kopieren eine Custom Action und nicht die MoveFile Tabelle?
Warum verwendest du zum Kopieren eine Custom Action und nicht die MoveFile Tabelle?
Stefan Krüger
InstallSite.org twitter facebook