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

verbieten den Start des MSI-Files


2 replies to this topic

bernard

bernard
  • Full Members
  • 127 posts

Posted 01 July 2010 - 08:56

habe IS2008 Professional Edition version 14

Aus einem InstallScript Projekt führe ich zig Basic MSI Projekte aus mit:
msiexec /i "<path>\ProductX.msi" INSTALLDIR="C:\Ziel-Directory\" /L*V "%Temp%\my_Product.log" /qn

ProductX.msi ist Basic MSI Project.

Installation Information
General Information -> Product Properties -> INSTALLDIR = {DELTA}[USERPROFILE]delta
Features -> my_Features -> Destination = [INSTALLDIR]
Components -> z.B. Basis_UserData -> Destination = {NEW_DIRECTORY}[USERPROFILE]delta\srcass

Aus Orca => Directory -> Tables -> Export Tables... :
Directory Directory_Parent DefaultDir
----------------------------------------------------------
DELTA USERPROFILE delta
INSTALLDIR DELTA .
NEW_DIRECTORY1 USERPROFILE delta
NEW_DIRECTORY2 NEW_DIRECTORY1 srcass
TARGETDIR SourceDir
USERPROFILE TARGETDIR .:USERPR~1|UserProfile

Alles funktioniert!

Problem
Man darf die MSI-Files per Click in Windows Explorer nicht starten!

Die .MSI-Files müssen prüfen ob sie den benötigten Parameter (INSTALLDIR) übergeben bekommen haben.
Falls nicht, muss eine MessageBox ausgegeben werden mit der Info, das SETUP.EXE ausgeführt werden muss.

Brauche eine Hilfe.

Danke in Voraus

Spitfyr

Spitfyr
  • Full Members
  • 162 posts

Posted 01 July 2010 - 10:43

Hallo
lege eine neue Custom Action (CA) vom Typ "Eror" (MSI Type Number 19) an.
Bei Error Message kannst du deine Fehlermeldung hinterlegen.

Dann lege eine neue Property an (z.B. TESTPROP) und gebe ihr den Defaultwert 1.

Hinterlege nun bei deiner neuen CA die Bedingung TESTPROP = "1"

Füge nun deinem Aufruf das Testprop hinzu:
msiexec /i "<path>\ProductX.msi" INSTALLDIR="C:\Ziel-Directory\" TESTPROT="2" /L*V "%Temp%\my_Product.log" /qn

Füge die CA nun in die entsprechenden Sequenzen ein und schon kann dein
MSI nicht direkt ausgeführt werden.
Wenn du den Dafaultwert von INSTALLDIR kennst, sollte das auch damit funktionieren (Ohne TESTPROP)


Ergänzung: Probiere aber auch mal aus, ob du das Produkt auch wieder über "Software" deinstallieren kannst. Nicht dass das auch verweigert wird. Evtl. muss du die Bedingung noch erweiter n(nur Meldung bringen wenn Produkt noch nicht installiert oder so)

Edited by Spitfyr, 01 July 2010 - 10:47.


bernard

bernard
  • Full Members
  • 127 posts

Posted 05 August 2010 - 10:27

Vielen Dank für Deine Antwort.
So weit funktioniert es richtig.
Zuerst kommt meine Fehlermeldung danach Dialog "SetupCompleteError".

Frage:
Wie kann ich programmieren wenn nach der Fehlermeldung sofort Schluss sein sollte?
QUOTE
Ergänzung: Probiere aber auch mal aus, ob du das Produkt auch wieder über "Software" deinstallieren kannst.
Nicht dass das auch verweigert wird.

Problem bei Deinstall:
1. Systemsteuerung -> Software -> my_Application -> Entfernen - OK!
2. regedit -> [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{guid}]
"UninstallString"=MsiExec.exe /I{guid}
a.
Ausführen... -> MsiExec.exe /I{guid}
kommt meine Fehlermeldung wie beim Clicken von WindowsExplorer
b.
Ausführen... -> MsiExec.exe TESTPROP="2" /I{guid}
Ist OK!