3 Stimmen

WiX - Installieren Sie einen Treiber, der vom Betriebssystem abhängt

Während der Installation muss ich einen externen Treiber installieren, der vom Betriebssystem des PCs abhängt. Ich weiß, dass ich mehrere Installationspakete für jedes Betriebssystem erstellen kann, aber ich muss es in einem einzigen Installationsprogramm tun. Ist das möglich?

Mein erstes Problem besteht darin, herauszufinden, welches Betriebssystem auf dem PC vorhanden ist. Über eine Bedingung wie die folgende?

<Condition Message="Your Operating system is ... .">
    VersionNT = 500
    <?define PCPlatform = "Win2000" ?>
    OR  VersionNT = 501
    <?define PCPlatform = "XP" ?>
    OR  VersionNT = 600
    <?define PCPlatform = "Vista" ?>
    OR  VersionNT = 601
    <?define PCPlatform = "Win7" ?>
</Condition>

Und wie kann ich dem Installationsprogramm mitteilen, welche Datei es ausführen soll?

<Component Id="Win32_W2K" Guid="...">
    <File Id="vbsetup7" Source="..\driver\32Bit\W2K\vbsetup7.exe" Name="vbsetup7.exe" KeyPath="yes" DiskId="1"/>
</Component>
<Component Id="Win32_XP" Guid="...">
  <File Id="vbsetup7" Source="..\driver\32Bit\XP\vbsetup7.exe" Name="vbsetup7.exe" KeyPath="yes" DiskId="1"/>
</Component>
<Component Id="Win32_Vista" Guid="...">
  <File Id="vbsetup7" Source="..\driver\32Bit\Vista\vbsetup7.exe" Name="vbsetup7.exe" KeyPath="yes" DiskId="1"/>
</Component>
<Component Id="Win32_Win7" Guid="...">
  <File Id="vbsetup7" Source="..\driver\32Bit\Win7\vbsetup7.exe" Name="vbsetup7.exe" KeyPath="yes" DiskId="1"/>
</Component>
<CustomAction Id="Virtual_Driver" FileKey="vbsetup7" Execute="deferred" ExeCommand="" Return="check" Impersonate="no"/>

6voto

Alexey Ivanov Punkte 11216

Sie müssen Folgendes hinzufügen Condition zu Ihren Komponenten. Zur Laufzeit, Condition muss nur für eines der Komponentenelemente den Wert "wahr" ergeben, d. h. die Bedingungen müssen sich gegenseitig ausschließen. Etwa so:

<Component Id="Win32_W2K" Guid="...">
    <Condition>VersionNT = 500</Condition>
    <File Id="vbsetup7" Source="..\driver\32Bit\W2K\vbsetup7.exe" Name="vbsetup7.exe" KeyPath="yes" DiskId="1"/>
</Component>

0voto

Stephen Connolly Punkte 1609

Wie installieren Sie die Treiber? Wenn Sie DifxApp verwenden, müssen Sie mehr als ein Installationsprogramm haben, eines für jede Zielarchitektur (x86 vs. x64). Es gibt wixlibs für Difxapp, die die Treiberinstallation ziemlich einfach machen.

0voto

Davidson Corry Punkte 213

Es kann zu Problemen kommen, wenn Sie ein Installationsprogramm "innerhalb" eines anderen ausführen müssen, insbesondere wenn das zweite Paket ebenfalls auf Windows Installer basiert, da Windows Installer (MSI) keine "verschachtelten" Installationen unterstützt. Einige der Ressourcen, mit denen MSI arbeitet, sind im Grunde global, so dass die innere Installation auf die laufende äußere Installation einwirken kann.

Ein besserer Ansatz ist die Verwendung einer Kette von Installationen. In WiX werden diese als bündelt und werden von der burn bootstrapper. Sie können auf jedes Element des Bundles Bedingungen anwenden, so dass ein bestimmtes Element nur für eine bestimmte Windows-Version ausgeführt wird (oder Service-Pack-Level, oder x86|x64, oder wenn ein anderes Paket auf dem System vorhanden ist oder nicht, oder... Die Installationsbedingungen können so flexibel sein, wie Sie möchten).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X