2016-06-01 6 views
0

Ich erstelle ein Installationsprogramm für eine C# -Anwendung mit Visual Studio Install Project. Diese Anwendung benötigt Python, also habe ich dies als benutzerdefinierte Voraussetzung hinzugefügt. Dies ist das Paketmanifest ich für die Voraussetzung schrieb:Visual Studio-Installationsprojekt führt keine InstallConditions aus

<?xml version="1.0" encoding="utf-8"?> 
<Package Name="DisplayName" Culture="Culture" xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"> 
    <PackageFiles CopyAllPackageFiles="false"> 
<PackageFile Name="python-3.4.4.amd64.msi" HomeSite="https://www.python.org/ftp/python/3.4.4/python-3.4.4.amd64.msi" PublicKey="3082010A0282010100AD1F1AA13C2A1F0A66721AC80D3356CC4DDB267CAA18E002B057D85E978FE5BF03AC7820A182AE3F7C785AAFFFC448FC5736B35D9E236F5E805EB60EA21276470C4DE40A7975B3DA98F90D50CE3702DEB5A7D44BAC8958F470CDE7C59220D23E2D902E0B6690EFA51F5D27843798CAB855823FE6F14F2A685EF5CF6F777BB45362DD6C55C12D2EA258B6E44B29342A8156F 3C7C9EFACAD23193E86ED44FCD8F2797DE9A2CCFE5A6DE60E57EC4F5DBDA878505B63B0AA41F129AC6F5CF1079C0649A9D0BAD01DC52989D71672E9D8EFE6A0B1A285232181E82D114D8871AAAEAF26BAC01D1FB787352B3785E22D3B9D6ABDC4D99A8D04ADD3596070F2B23A38F90203010001" /> 
</PackageFiles> 
<InstallChecks> 
<RegistryCheck Property="IsInstalled" Key="HKLM\Software\Python\"/> 
<RegistryCheck Property="IsCurrentUserInstalled" Key="HKCU\Software\Python\"/> 
</InstallChecks> 
<Commands Reboot="Defer"> 
<Command PackageFile="python-3.4.4.amd64.msi"> 
    <InstallConditions> 
    <BypassIf Property="IsInstalled" Compare="ValueExists" /> 
    <BypassIf Property="IsCurrentUserInstalled" Compare="ValueExists" /> 
    </InstallConditions> 
    <ExitCodes> 
    <ExitCode Value="0" Result="Success"/> 
    <DefaultExitCode Result="Fail" String="Anunexpectedexitcodewasr" FormatMessageFromSystem="true" /> 
    </ExitCodes> 
</Command> 
</Commands> 
<Strings> 
<String Name="Culture">no</String> 
<String Name="DisplayName">Python 3.4.4</String> 
<String Name="Anunexpectedexitcodewasr">An unexpected exit code was returned from the installer. The installation failed.</String> 
</Strings> 
</Package> 

Das Problem ist, dass, wenn ich das Installationsprogramm auf einem System ausgeführt, das Python hat, ist es mir, es herunterzuladen und zu installieren fragen hält. Die Registrierungsschlüssel, nach denen ich suche, sind auf dem System vorhanden. Was soll ich machen?

Antwort

0

Es ist mir nicht klar, ob der Bootstrapper-Check im nativen oder WoW6432-Speicherort sucht. Wenn es sich um eine 32-Bit-Anwendung handelt, sucht es möglicherweise in der falschen (d. H. 32-Bit-) Registrierung. Ich weiß nicht, ob es eine Möglichkeit gibt, die WoW6432-Registrierung oder die native zu wählen.

Aus dem Blick in die Registry-Tabelle in der Python-MSI-Datei scheint es auch nichts zu schreiben, das "IsInstalled" enthält, und ich würde erwarten, dass die Installation das ist, was diesen Eintrag erstellt hat. Es gibt jedoch einen Eintrag Software \ Python \ PythonCore \ 3.4 \ InstallPath, der den Installationsort enthält. Vielleicht sollten Sie also etwas anderes suchen.

+0

IsInstalled ist nur ein Variablenname für das RegistryCheck: Es sollte wahr sein, wenn der Registrierungsschlüssel HKLM \ Software \ Python existiert. Dasselbe gilt für IsCurrentUserInstalled. Jetzt sehe ich, dass das Problem ist, dass die Überprüfungen nach dem Herunterladen von Python durchgeführt werden: Wenn es bereits installiert ist, wird es trotzdem heruntergeladen, aber es muss nicht installiert werden. – DevOlly