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

Zugriff auf Properties unter Vista mit UAC


6 replies to this topic

maniac

maniac
  • Full Members
  • 94 posts

Posted 26 June 2008 - 15:48

Hi,

ich habe unter Vista bei angeschalteter UAC das Problem, dass eine Custom Action nicht erfolgreich ausgeführt werden kann, obwohl ich bei aufpoppender UAC angklickt habe "erlauben".

Soweit zur Vorgeschichte:

Momentan wird die CA als Intermediate Execution vor InstallFinalize ausgeführt. Das man dass unter Vista nicht machen soll weiss ich. Habe die Guideline von Stefan Krüger gelesen. Wenn ich die CA also als Deferred Execution im System Context einordne, kann ich nicht auf INSTALLDIR zugreifen. Der Wert ist dann immer leer. Ich verwende IS 2008. Das ist auch unter XP so. Also habe ich zu Beginn der Installation/Deinstallation immer eine CA zu laufen, die mir INSTALLDIR in ein PROPERTY schreibt, welches ich bei der besagten CA auslese, um damit arbeiten zu können. Aber auch das ist leer, wenn die CA als Verzögerte Action läuft. Bis jetzt habe ich immer mit IS 11.5 gearbeitet. Da war das Verhalten ja noch anders.

Hintergrund:

Warum brauche die die CA. Unsere Anwerndung installiert nach PRORAMFILESFOLDR\<NAME>. Zu Laufzeit legt diese in diesem Verzeichnis Daten ab, welche ich bei der Deinstallation zusätzlich mit abräumen muss, damit keine Reste bleiben.

Wie bekomme ich es also hin, dass das unter XP & Vista mit UAC vernüftig läuft.

Vielen Dank schonmal für die TIPS.

Gruß

maniac

Edited by maniac, 26 June 2008 - 15:50.


mkkk

mkkk
  • Full Members
  • 63 posts

Posted 26 June 2008 - 15:54

Schau Dir doch mal diesen Artikel dazu an: "CustomActionData und Deferred CA, CustomActionData ist leer" (http://forum.install...indpost&p=49548)

Edited by mkkk, 26 June 2008 - 15:55.


maniac

maniac
  • Full Members
  • 94 posts

Posted 26 June 2008 - 16:11

Verstehe ich nicht mit den gleichen Namen ?!?!?!. Ich habe eine CA in folgender Code abläuft:

CODE
function ExFn_SetInstallDirectory(hMSI)

begin
   
MsiSetProperty(ISMSI_HANDLE, "InstallationDirectory", INSTALLDIR);

end;


--> setze also INSTALLDIR auf InstallationDirectory

Dann habe ich eine zweite CA in der folgender Code läuft:


CODE
function ExFn_DeleteDir(hMSI)
NUMBER nResult;
NUMBER nvType;
STRING svGetInstallDirectory, svMatchingFileName;
 
begin
   
   nvType = 256;
MsiGetProperty(ISMSI_HANDLE, "InstallationDirectory", svGetInstallDirectory, nvType);
   
if (ExistsDir (svGetInstallDirectory) = EXISTS) then
   
 nResult = FindAllFiles (svGetInstallDirectory, "*.*", svMatchingFileName, RESET);
    while(nResult = 0)  
   
        SetFileInfo (svMatchingFileName, FILE_ATTRIBUTE, FILE_ATTR_NORMAL, "");
        // Find the next matching file name.
        nResult = FindAllFiles(svGetInstallDirectory, "*.*", svMatchingFileName, CONTINUE);

    endwhile;  
 
 if (DeleteDir (svGetInstallDirectory, ROOT) < 0) then      
  MessageBox ("Some Files can't be deleted, because these Files are locked. Try to delete them after you reboot your computer.", SEVERE);          
 endif;
     
endif;
   
return 0;

end;


InstallationDirectory ist dann aber leer

Edited by maniac, 26 June 2008 - 16:12.


maniac

maniac
  • Full Members
  • 94 posts

Posted 26 June 2008 - 16:39

Habs wie von ali beschrieben LINK probiert. Kriegs nicht hin sad.gif

Edited by maniac, 26 June 2008 - 16:40.


maniac

maniac
  • Full Members
  • 94 posts

Posted 27 June 2008 - 08:19

habs hinbekommen. Jedoch noch eine Frage:

Wenn ich auf das Property INSTALLDIR an meheren Stellen in unterschiedlichen Scripts zugreifen will, muss ich dann für jedes Installscript eine entsprechende CA vom Type 51 erstellen?

mkkk

mkkk
  • Full Members
  • 63 posts

Posted 27 June 2008 - 08:49

Innerhalb der Ausführungssequenz zwischen InstallInitialize und InstallFinalize muß eine CA vom Typ 51 das Property setzen das Du dann in einer CA (deferred CA) mit gleichem Namen über das Property CustomActionData auslesen kannst.

In diesem Bereich der Ausführungssequenz macht der Windows-installer dicht, weil er hier jetzt aktiv installiert/deinstalliert und so eine Verbindung nach draußen so gut wie nicht mehr zuläßt.

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 27 June 2008 - 17:28

QUOTE
Wenn ich auf das Property INSTALLDIR an meheren Stellen in unterschiedlichen Scripts zugreifen will, muss ich dann für jedes Installscript eine entsprechende CA vom Type 51 erstellen?
Ja, wenn du es in mehreren Deferred Custom Action benutzen willst, brauchst du auch entsprechend mehrere Typ 51 Actions, jeweils passend zu den Namen der Deferred CAs.