Jump to content

DuDo

Members
  • Content Count

    5
  • Joined

  • Last visited

Community Reputation

0 Neutral

About DuDo

  • Rank
    Newbie
  1. Ich habe diese "Product.wxs" "zusammen geschustert": <?xml version="1.0" encoding="UTF-8"?> <*** xmlns="http://schemas.microsoft.com/***/2006/wi"> <Product Id="*" Version="1.0" Language="1033" Name="SetupPackage" Manufacturer="SampleGmbH"> <Package InstallerVersion="300" Compressed="yes" /> <Media Id="1" Cabinet="SetupPackage.cab" EmbedCab="yes" /> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ProgramFiles64Folder"> <Directory Id="MyProgramDir" Name="SetupPackage"> <Directory Id="MyFirstSubDir" Name="SubFolder1"> <Directory Id="INSTALLDIR" Name="SubFolder2"> <Directory Id="MyThirdSubDir" Name="SubFolder3"/> </Directory> </Directory> </Directory> </Directory> </Directory> <DirectoryRef Id="MyThirdSubDir"> <Component Id="NEW.config" Guid="*" Win64="yes" > <File Id="NEW.config" Source="SubFolder3\NEW.config" KeyPath="yes" Checksum="yes"/> </Component> <Component Id="skript.ps1" Guid="*" Win64="yes" > <File Id="skript.ps1" Source="SubFolder3\skript.ps1" KeyPath="yes" Checksum="yes"/> </Component> <Component Id="Anwendung.msi" Guid="*" Win64="yes" > <File Id="Anwendung.msi" Source="SubFolder3\Anwendung.msi" KeyPath="yes" Checksum="yes"/> </Component> </DirectoryRef> <Feature Id="MainApplication" Title="Main Application" Level="1"> <ComponentRef Id="Anwendung.msi" /> </Feature> <Binary Id="call_skript.exe" SourceFile="SubFolder3\call_skript.exe"/> <CustomAction Id="call_skript.exe" BinaryKey="call_skript.exe" ExeCommand="/s" Impersonate="no" Execute="deferred" Return="check" /> <InstallExecuteSequence> <Custom Action="call_skript.exe" After="InstallFiles">Not Installed</Custom> </InstallExecuteSequence> </Product> </***> Die "call_skript.exe" habe ich über Visual Studio als Konsolen-App C# erstellt, die das PowerShell-Skript ausführen soll. Das PowerShell-Skript führt dann folgende Befehle aus: msiexec /i "Anwendung.msi" und tauscht anschließend die config aus. Ich habe in anderen Beiträgen gelesen, dass ich einen "Bootstrapper" verwenden muss, um eine MSI aus einer anderen MSI heraus zu installieren. Es fällt mir aber ehrlich gesagt schwer, das ganze Konstrukt zu verstehen.
  2. Hallo Zusammen, ich arbeite derzeit an einer Anwendung, die mir über WixToolset + CommandLine ein vordefiniertes Setup-Paket im MSI-Format erstellt. Am Ende soll ein MSI-Paket erstellt werden, welches beim Ausführen folgendes macht: 1.) 2 Dateien (1x MSI-Anwendung & 1x NEW.config-Datei) sollen in das vordefinierte Zielverzeichnis kopiert werden 2.) Nach dem Kopieren, die kopierte MSI-Anwendung installieren, 3.) Nach der Installation des MSI-Pakets, am besten mittels Batchfile (.cmd) oder PowerShell-Skript (.ps1) die durch die MSI-Anwendung installiert/erstellte "ALT".config-Datei - durch die in Schritt 1.) kopierte "NEW.config" austauscht. Ich habe die Aufgabenstellung seither über unzählige Versuche vergeblich versucht zu lösen, in dem ich über das MSI-Paket alles kopiere und über eine Konsolen-EXE ein Batchfile oder PowerShell-Skript aufrufe, die dann das kopierte MSI installieren und anschließend die config tauscht. Die MSI-Anwendung wird aber leider nie installiert. Könnt ihr mir helfen oder ggf. beschreiben, welche Komponenten in der Product.wxs-Datei erforderlich sind? Für eure Unterstützung vielen Dank! Viele Grüße DuDo
  3. Sorry Zusammen^^ Hatte viel um die Ohren und war mit der Lösung des Problems beschäftigt. Ihr hattet Recht - Ich habe mir zwischenzeitlich einiges an Tutorials reingezogen und viel ausprobiert. Habe es lösen können - jedoch über einen anderen Weg: # Windows-Dienst "Dienst 123" stoppen Stop-Service -Name Dienst123 # Oracle Home-Verzeichnis aus der Oracle-Inventory-XML einlesen $oraclehome = [xml](get-content 'C:\Program Files\Oracle\Inventory\ContentsXML\inventory.xml') # Der Pfad zeigt nur auf das \dbhome\ Verzeichnis - darin liegt aber das /jdk/jre! # Java-Pfad überarbeiten und in config.config schreiben $config = [xml](get-content 'C:\Program Files\CONFIG\config.config') $config.configuration.systemsettings.setting.key.value[14].loc = ($oraclehome.inventory.home_list.home.loc[0]+"/jdk/jre") $config.Save('C:\Program Files\CONFIG\config.config') # Windows-Dienst "Dienst123" starten Start-Service -Name Dienst123 Was haltet ihr davon? VG DuDo
  4. Vielen Dank für die schnellen Antworten! Ich habe beim zweiten Punkt ein Problem, die anderen müsste ich noch testen, ob das so funktioniert. Könnt Ihr ggf. mal drüber sehen? Danke :) # Dienst stoppen Stop-Service -Name "Dienst123" # Java-Verzeichnis des ORACLE_HOME Verzeichnis herausfinden Get-ChildItem -Path .\app\oracle\* -Include *java* # Hier komm ich schon nicht weiter!? # Ermittelten Wert in der *.config Datei ersetzen Get-Content -Path C:\Program Files\CONFIG\config | ForEach-Object {$_ -Replace 'JAVAPFAD', 'Ermittelter Wert wie eintragen!?'} | Set-Content -Path C:\Program Files\CONFIG\config # Dienst starten Start-Service -Name "Dienst123" # Messagebox/Information Write-Host "Ihre Änderungen wurden durchgeführt!"
  5. Hallo Zusammen, als absoluter Neueinsteiger in das Thema Powershell, habe ich eine schwierige Aufgabe erhalten. Ich benötige ein Powershell-Skript, mit folgendem Inhalt: 1.) Stop Windows-Service "Dienst123" 2.) Search the computer for the Java Runtime directory path without the final "\ bin \ java.exe" of the ORACLE_HOME directory - (bei mehreren Oracle Versionen, die neueste Version nehmen) 3.) The determined directory path e.g. "C:\app\oracle\product\12.1.0\dbhome_1\jdk\jre\" into existing "configfile.config" overwrite the value "JAVAPFAD" replace and save. 4.) Start Windows-Service "Dienst123" 5.) Messagebox/Info Success or Failed. 6.) Path for the config.config: "C:\Program Files\CONFIG\config.config" Wie kann das am besten umsetzen? Kann mir jemand Hilfestellung geben? Für eure Unterstützung vielen Dank! VG DuDo
×
×
  • Create New...