Jump to content
DuDo

MSI-Paketerstellung - Toolset

Recommended Posts

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

 

 

Share this post


Link to post
Share on other sites

Du solltest vermutlich nicht nur beschreiben, was Du machen möchtest, sondern auch, was Du bisher gemacht hast und den dazugehörigen Code mitliefern, bitte. Ein paar Informationen über die "Umgebung" wären vermutlich auch nicht schlecht. ;-)

 

MSI-Installation kann man normalerweise sehr gut mittels MST-Dateien an die eigenene Bedürfnisse anpassen.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Hmmm ... sowas Ähnliches hatte ich befürchtet ... ;-)  ... von WixToolset hab ich natürlich keine Ahnung und ich bin auch weit davon entfernt, mich einen MSI-Expreten zu nennen, aber was ich mich frage: Warum willst Du denn überhaupt eine MSI-Datei in eine MSI-Datei packen? Was ist die "Umgebung" und was willst Du erreichen?

 

Wenn Du in einer Windows-Domäne unterwegs bist, gibt es üblicherweise verschiedene Möglichkeiten, eine bestimmte Software mit bestimmten Eigenschaften zu installieren.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


Werbepartner:



×
×
  • Create New...