Laden...

Von WIX nach Powershell-Skript ein Argument übergeben

Erstellt von Mackerlama vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.585 Views
M
Mackerlama Themenstarter:in
118 Beiträge seit 2008
vor 13 Jahren
Von WIX nach Powershell-Skript ein Argument übergeben

Hallo,

ich bastel einen Install-Dialog mit WiX. Am Ende des Setups soll ein Powershell-Skript laufen, dass den Installpfad übergeben bekommen braucht. Wie geht das?

Das Ausführen von Powershell-Skripten funktioniert. Nur wie man Argumente übergibt, weiß ich nicht.

*edit*
Lösungshinweis: Silently executing a PowerShell script from WiX Hangs PowerShell

1.361 Beiträge seit 2007
vor 13 Jahren

Hi,

das geht mit dem param-Statement. Nur eben nicht in einer Funktion, sondern direkt im Skript.

Da kannst du dann natürlich auch Default-Werte festlegen und auch nen ExceptionWurf reinnehmen, wenn der Parameter "pflicht" ist und du nen ordentlichen Text zurückgeben willst. Beispielsweise:

param([int] $myFirstParam = $(throw "Please tell me a number!"))

Write-Host "You told me $myFirstParam."

beste Grüße
zommi

M
Mackerlama Themenstarter:in
118 Beiträge seit 2008
vor 13 Jahren

*edit*
nun weiß ich, wie du das gemeint hast. Habe einen Link in den Startpost editiert.


Hallo,

es geht mir wirklich nur um das Problem, wie ich das Argument im WiX-Code an das Skript weiterreiche.

der entsprechende WiX-Code sieht bspw. so aus

<CustomAction Id="CATest" Property="POWERSHELLEXE" ExeCommand="-NoLogo -NoProfile -NonInteractive -File &quot;C:\Test.ps1&quot;" Return="check" Execute="immediate" />

<InstallExecuteSequence>
   <Custom Action="CATest" After="ProcessComponents">NOT  Installed</Custom>
</InstallExecuteSequence>

ein Test PS-Skript kann so aussehen. (Es schreibt aktuelle Prozesse in eine Datei. Der voll Dateipfad soll per Argument übergeben werden.)

Get-Process | Out-File -Encoding ASCII -FilePath $args[0]

Die Frage ist nur wie ich args[0] übergebe. (Im konkreten Fall wird es das vorher gewählte Installationsverzeichniss sein.)

M
1.439 Beiträge seit 2005
vor 13 Jahren

Schon mal mit [PROPERTY_NAME] im ExeCommand-Attribut versucht.
Also z.B.:


ExeCommand="-File [INSTALLDIR]"

M
Mackerlama Themenstarter:in
118 Beiträge seit 2008
vor 13 Jahren

ja genau so geht das und zommi zeigt auch ein beispiel, wie der entsprechende powershell code gestaltet werden kann.

ich hatte ein brett vor dem kopf und wollte ewig nicht verstehen, dass die kommunikation so einfach ist 😃