Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Ausführbare Installationsdatei aus mehreren Dateien erstellen

Frage Entwicklung Installation

Mitglied: 3nte92

3nte92 (Level 1) - Jetzt verbinden

26.09.2013 um 15:32 Uhr, 6565 Aufrufe, 15 Kommentare

Hallo Administratoren!

Ich stehe nach langem mal wieder vor einem kleinen Problem und habe noch keine passende Antwort im Web gefunden bzw. wusste auch nicht wirklich, nach was ich suchen soll.

Folgendes Problem:
Ein Programm wird in Kombination von einigen .exe, .cmd, .reg und .msi-Files installiert. D.h. das CMD-File führt eine .exe aus, welche mit bestimmten Benutzerrechten ein MSI-File mit bestimmten Parametern aufruft und dieses wiederum das letztendliche Programm (.exe) mit den einstellungen in einer .reg installiert. So habe ich mittlerweile die Möglichkeit geschaffen, über einen einzigen klick auf eine .cmd-Datei ein Programm im Hintergrund als Administrator beim Benutzer ohne Rechte, mit entsprechend vorkonfigurierten Einstellungen für das Programm zu installieren. Soweit so gut...

Nun möchte ich jedoch aus diesen Dateien eine einzige ausführbare Datei erstellen, sodass der jeweilige Benutzer ohne Adminrechte einfach diese eine Datei ausführen und somit das Programm installieren kann. Diese Datei soll logischerweise alle bisherigen zur Installation benötigten Dateien beinhalten und lediglich die Funktion der bisherigen .CMD-Datei übernehmen.

Ich hoffe ich konnte dies ein wenig verständlich erklären.

Vielen Dank vorab für eure Antworten!


Mit freundlichen Grüßen,
Toby Müller
Mitglied: colinardo
26.09.2013, aktualisiert um 16:12 Uhr
Hallo Toby,
dazu kannst du ein selbstrextrahierendes RAR oder ZIP-Archiv hernehmen, sowas erstellen können z.B. die Programme WinRAR oder 7Zip. Diesen kann man mitteilen das sie einen Befehl nach dem extrahieren ausführen und schon im voraus Admin-Rechte anfordern sollen.
In Windows gibt es auch ein kleinen Wizard der solch ein Archiv erstellen kann (c:\windows\system32\IExpress.exe)

Grüße Uwe
Bitte warten ..
Mitglied: 3nte92
26.09.2013 um 16:48 Uhr
Hi colinardo,

vielen Dank für die schnelle Antwort.

IExpress ist echt ein schönes Tool, habe es gerade getestet und vorher garnicht gekannt. *schäm*
Leider kann ich hiermit lediglich eine .exe-Datei aufrufen. Dieser .exe muss ich jedoch Parameter mitgeben. Momentan mach ich das über eine CMD-Datei. IExpress gibt mir leider nicht die Möglichkeit, die Parameter mit einzutragen, oder doch? Habe es zumindest nicht hinbekommen. Er startet die .exe immer ohne Parameter.

Am einfachsten wäre es, wenn ich die CMD- oder Batch-Datei mit einer .exe öffnen kann. geht das?

Lg Toby
Bitte warten ..
Mitglied: colinardo
26.09.2013, aktualisiert um 17:19 Uhr
Bei WinRar weiß ich das du auch Parameter mitgeben kannst, wie das bei 7Zip ist kann ich im Moment nicht sagen. Ansonsten gibt es noch Tools die aus einer CMD-Datei eine Exe bauen, diese Dateien werden aber häufig von Virenscannern als verdächtig betrachtet.
Ich selber nutze für solche Fälle AutoIt um mir eine benutzerdefinierte EXE zu bauen... AutoIt ist selbst auch in der Lage zusätzlich benötigte Dateien in die erstellte EXE mit einzupacken.

Grüße Uwe
Bitte warten ..
Mitglied: colinardo
26.09.2013, aktualisiert um 17:30 Uhr
Zitat von 3nte92:
IExpress ist echt ein schönes Tool, habe es gerade getestet und vorher garnicht gekannt. *schäm*
Leider kann ich hiermit lediglich eine .exe-Datei aufrufen. Dieser .exe muss ich jedoch Parameter mitgeben. Momentan mach ich das
über eine CMD-Datei. IExpress gibt mir leider nicht die Möglichkeit, die Parameter mit einzutragen, oder doch? Habe es
zumindest nicht hinbekommen. Er startet die .exe immer ohne Parameter.
also ich habe mit IExpress erfolgreich eine CMD-Datei inklusive Parameter für diese, so starten können:

708f4833be31a2703e4263307392584d - Klicke auf das Bild, um es zu vergrößern
Bitte warten ..
Mitglied: 3nte92
27.09.2013, aktualisiert um 09:35 Uhr
Bei mir haperts an irgend einer Kleinigkeit.
Ich hab nun herausgefunden, dass ich auch eine .bat mit IExpress ausführen kann und das Programm einfach in die .bat gepackt. Ich versuche mal meinen Vorgang zu erklären:

Das ist meine BATCH-Datei "install.bat":
START programm1.exe -parameter1 -parameter2 "file.job"

Das o.g. programm1.exe führt mit entsprechenden Benutzerdaten und Parametern das programm2.msi aus.
programm2.msi installiert programm3.exe mit Hilfe der Einstellungen, welche in einer settings.reg gespeichert sind.

Alle Dateien liegen in einem Verzeichnis. Führe ich nun die install.bat mit einem Doppelklick aus, wird das Programm ohne Probleme im Hintergrund installiert.
Soweit alles perfekt. Das alles soll nun eine einzige .exe erledigen...

Dazu die Einstellungen in IExpress:

1. Create a new Self Extraction Directive file.
2. Extract files and run an installation command
3. Package title: "Test Install"
4. Confirmation prompt: No prompt
5. License agreement: Do not display a license.
6. Packaged files: Add - install.bat, programm1.exe, file.job, programm2.msi, programm3.exe, settings.reg
7. Install Program to Launch: install.bat
Post Install Command: <none>
8. Show windows: Default
9. Finished message: No message.
10. Packgae Name and Options: Test.exe (Keine Optionen)
11. Configure restart: No restart
12. Save Self Extraction: Don't save.

Mit genau diesem Setup erstelle ich die Test.exe
Führe ich diese anschließend aus, öffnet er mir lediglich ganz kurz ein CMD-Fenster, ansonsten passiert nichts...
Finde einfach nicht heraus, worin der Fehler liegt :/
Bitte warten ..
Mitglied: colinardo
27.09.2013, aktualisiert um 09:37 Uhr
Trag mal bei Punkt 7 folgende Zeile ein:
cmd.exe /K install.bat
damit sich das CMD-Fenster nicht beendet, und bau zusätzlich in das script ein PAUSE am Ende ein um zu sehen was das Problem bei deinem Befehl ist.

Grüße Uwe
Bitte warten ..
Mitglied: 3nte92
27.09.2013 um 10:53 Uhr
Folgendes passiert:

C:\Users\<BENUTZER>\AppData\Local\Temp\IXP000.TMP>START programm1.exe -parameter1 -parameter2 "file.job"

C:\Users\<BENUTZER>\AppData\Local\Temp\IXP000.TMP>PAUSE
Drücken Sie eine beliebige Taste . . .


Scheinbar fügt er den BATCH-Befehl nur in die cmd.exe ein, führt diese aber nicht aus?
Bitte warten ..
Mitglied: colinardo
27.09.2013, aktualisiert um 11:17 Uhr
also hier geht's problemlos.
mach es mal mit
01.
START /WAIT /B programm1.exe -parameter1 -parameter2 "file.job"
und starte die EXE mal mit Administrator-Rechten ...
Bitte warten ..
Mitglied: 3nte92
27.09.2013 um 11:48 Uhr
Funktioniert auch nicht.
Aus irgendeinem Grund startet er die programm1.exe mit den entsprechenden Parametern nicht.
Kurz zu Erklärung, was es mit dem programm1.exe auf sich hat:

Ich versuche das MSI-Paket mit Administrator-Rechten unter einem Benutzer ohne Adminrechte auszuführen. Dafür benutze ich das Tool "cpau", welches die Benutzerdaten und die Parameter für das MSI-Paket in einem jobfile.job verschlüsselt speichert.
Über eine install.cmd/.bat möchte ich nun die cpau.exe mit den parametern -dec -file "jobfile.job" ausführen, um das MSI-Paket zu installieren.

Genau hier scheint es wohl ein Problem zu geben.
Vielleicht liegt es irgendwo an der cpau.exe?
Bitte warten ..
Mitglied: colinardo
27.09.2013 um 12:09 Uhr
Kenn das Tool noch nicht, müsste ich später mal damit testen
aber noch zur Info:
CPAU job-Files sind einfach zu entschlüsseln

Grüße Uwe
Bitte warten ..
Mitglied: 3nte92
27.09.2013, aktualisiert um 12:51 Uhr
Im Endeffekt soll nur der Kunde das Passwort nicht wissen. Grundsätzlich kann man damit jedoch nicht viel anfangen. Glaube auch kaum, dass der Kunde in der Lage ist, das zu entschlüsseln. Zudem wäre das jobfile dann ja auch zusätzlich in der .exe mit verpackt und nur kurzzeitig im TEMP-Ordner zu finden.

Falls ihr eine andere Möglichkeit habt, das MSI-Paket als Administrator auszuführen, würde das auch gehen.

Ich habe grad folgende Idee gehabt, weis aber nicht wie ich sie umsetzen soll:
Ich habe versucht über cpau einfach die cmd.exe als Admin zu starten (über ein mit IExpress erstelltes Package)
Dies hat ohne Probleme funktioniert. Nun müsste ich nur anschließend in dem schon geöffneten CMD-Fenster den Befehl zum ausführen des MSI-Pakets eingeben.
Würde das funktionieren? Wenn ja wie? Kann ich in einer .BAT oder .CMD sagen, dass er das bereits geöffnete Fenster nehmen soll o.ä. ?
Bitte warten ..
Mitglied: colinardo
27.09.2013, aktualisiert um 13:53 Uhr
Denke das Problem liegt an CPAU. Habe gerade mal die Ausgabe von CPAU beim encodieren eines Jobfile gecheckt :
This will not be an interactive authentication. This means 
that the credentials are only valid for connecting to remote 
resources, locally you will have the credentials CPAU was 
launched with. If you need the specified credentials to work 
on the local machine you need to use -LWP or -LWOP options.
D.h. die Credentials die du CPAU mitgibst kann es nur für Remote-Verbindungen benutzen und nicht lokal, damit dies geht musst du beim Aufruf die Option -LWOP oder LWP verwenden.

install.bat
Befehl in der Batch-Datei
cpau.exe -dec -file "jobfile.job" -LWOP
Ich hoffe du hast beim encodieren keinen Pfad zu der MSI-Datei hinterlegt. So sollte es aussehen
01.
cpau -u USER -p PASS -ex "msiexec.exe /i MSIFILE.msi" -enc -file "jobfile.job"
Im iExpress Wizard stellst du dann an Position 7 folgende Befehlszeile ein:
cmd.exe /c install.bat
und dann noch an Position 10 die Option "Lange Dateinamen" auswählen.

So hat es bei meinen Tests einwandfrei funktioniert ...

Grüße Uwe
Bitte warten ..
Mitglied: 3nte92
27.09.2013 um 13:05 Uhr
Okay,
werde das gleich nochmal testen.

Habe jedoch bei der msiexec noch mehrere Parameter dazu gegeben. Sodass siq zb. /passive und /quiet installiert.
Bitte warten ..
Mitglied: 3nte92
27.09.2013 um 13:51 Uhr
Hab das nun so eingefügt, wie du oben beschrieben hast. Funktioniert jedoch immer noch nicht. Er möchte die MSI einfach nicht ausführen...

Hier mein Code der jobfile.job
cpau.exe -u AdminBD -p admin4backdoor -ex "msiexec /quiet /passive /norestart /qn+ /package MSIFILE.msi"
Bitte warten ..
Mitglied: 3nte92
27.09.2013 um 15:35 Uhr
So ich habe es hinbekommen...

Folgende Lösung:
Habe nun aus dem MSI-File, dem dazugehörigen Programm und der REG-Datei mit IExpress die erste install1.exe erstellt.
Anschließend mithilfe der CPAU.exe, dem jobfile und der BAT eine zweite install2.exe, in der ich die install1.exe über die CPAU aufrufe.

So steht in der install1.exe als Command nur der Aufruf vom MSI-Paket und in der zweiten die install.bat, welche den Aufruf der CPAU + dem jobfile erledigt.
Das jobfile enthält die Daten des Benutzers und der install1.exe.

Nun habe ich endlich eine .exe, die die gewünschte Installation durchführt.


Vielen Dank für die Mühe!
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Server
Windows 2003 Terminalserver - ausführbare Dateien einschränken (6)

Frage von Excaliburx zum Thema Windows Server ...

Batch & Shell
gelöst Powershell: Dateien nach Version löschen in mehreren Ordnern (4)

Frage von ImmerKind zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...