installieren Ich habe eine Anwendung in VS 2015 kompiliert und erfordert die VC++ Redistributable Paket, um richtig zu laufen. Vor diesem letzten Build verwendeten wir eine ältere Version von VS und verwendeten einfach ein Mergemodul, um die Installation der entsprechenden Redist-Dateien zu übernehmen. Allerdings habe ich festgestellt, dass, wenn die neueste Version der Mergemodule für das Jahr 2015 (Microsoft_VC140_CRT_x64.msm) mit, dass meine Anwendung immer noch nicht aus dem Kasten heraus arbeiten. I did some digging und es scheint, dass einige Dinge mit der neuesten Version der Merge-Module geändert haben. Es scheint, dass Microsoft jetzt empfiehlt, das Paket vcredist_x64.exe direkt zu installieren, anstatt Mergemodule zu verwenden.WIX laufen vcredist_x64.exe auf
Also, ich bin versucht, eine benutzerdefinierte Aktion zu erstellen, dies zu tun. Ich bin nach einem similar tutorial here, obwohl es für die VC Neuverteilung ausführbaren anzupassen. Das erste, was ich tun muß, ist Setup, wo die EXE-Datei einmal platziert werden wird installiert:
<Directory Id='APPLICATIONROOTDIRECTORY' Name='MyApp'>
<Directory Id="VCREDISTDIR" Name="VCRedist">
</Directory>
</Directory>
Dann brauche ich meine Dateien in eine Komponentengruppe hinzufügen, die als Teil eines versteckten installiert werden Feature (wie ich möchte, dass dies automatisch installiert wird).
<ComponentGroup Id="VCRedist" Directory="VCREDISTDIR">
<Component Id="vcredist_x64.exe" Guid="-INSERT-GUID-HERE-" Win64="yes">
<File Id="VCREDISEXE" Name="vcredist_x64.exe" KeyPath="yes" Source="$(var.VCRedistSourceDir)" Checksum="yes"></File>
</Component>
</ComponentGroup>
Und ...
<Feature Id="VCRedistributable" Title="Visual C++ Runtime" AllowAdvertise="no" Display="hidden" Level="1">
<ComponentGroupRef Id="VCRedist" />
</Feature>
An diesem Punkt sollte die vcredist_x64.exe auf die Maschine des Endbenutzers kopiert werden. Jetzt muss ich eine benutzerdefinierte Aktion erstellen, um die ausführbare Datei nach der Installation zu starten.
<CustomAction Id="InstallVCRedistributable"
FileKey="VCREDISEXE"
Execute="deferred"
ExeCommand="/silent"
Impersonate="no"
Return="check"/>
<InstallExecuteSequence>
<Custom Action="InstallVCRedistributable" Before="InstallFinalize">
<![CDATA[NOT REMOVE]]>
</Custom>
</InstallExecuteSequence>
ich auch eine Statusmeldung an meine UI, damit ich sehen kann, wenn die ausführbare Datei ausgeführt wird. Jetzt
<UI>
<ProgressText Action="InstallVCRedistributable">Installing Visual C++ Redistributable for Visual Studio 2015</ProgressText>
</UI>
, wenn ich mein Installationsprogramm soll es die vcredist_x64.exe starten ... und es tut ... aber dann während der Installation von ausführbaren dass es aufgehängt wird. Ich erhalte eine Popup-Nachricht, die besagt, dass ein Problem mit diesem Windows Installer-Paket vorliegt und ein Programm, das als Teil des Setups ausgeführt wurde, nicht abgeschlossen wurde. Es rollt dann meine Hauptanwendungsinstallation zurück und wird nie installiert. Kann jemand erklären, warum dies geschieht und wie man es beheben kann? Vielen Dank!
FYI, das Hinzufügen von Microsoft_VC140_CRT_x64.msm in Ihrem Installer * funktioniert * solange das Zielsystem auch den Universal CRT installiert hat. Das Mergemodul selbst ist nicht mehr vollständig unabhängig. –