2017-12-27 5 views
0

Ich folge this tutorial, um ein WiX-Installationsprogramm für eine VS2017 Winform app zu erstellen. Es ist nur eine Standard-Winform-App (nichts Schickes). Aber wenn ich das WiX-Projekt baue (SetupProject1 wie in Abbildung 1 unten gezeigt), bekomme ich den folgenden Fehler zuerst <File id=.../> Tag von ProductComponent.wxs (siehe unten).

Frage: Was fehlt mir hier vielleicht?

Hinweis: Ich verwende dieses Wix Toolset Visual Studio 2017 Extension

Fehler:

Undefined preprocessor variable '$(var.SetupProject1.TargetDir)'

VS2017 Mappen-Explorer:

enter image description here

Product.wxs

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Product Id="89ae9543-fdf1-444b-9678-811483fd58bd" Name="SetupProject1" Language="1033" Version="1.0.0.0" Manufacturer="WiX_test_4_Winfrm" UpgradeCode="e69fe67b-5c28-4764-8196-a6613b840eff"> 
     <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" /> 

    <UIRef Id="WixUI_Mondo" /> 
    <Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER"></Property> 

     <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> 
     <MediaTemplate EmbedCab="yes" /> 

     <Feature Id="ProductFeature" Title="SetupProject1" Level="1"> 
      <ComponentGroupRef Id="ProductComponents" /> 
     </Feature> 
    </Product> 

    <Fragment> 
     <Directory Id="TARGETDIR" Name="SourceDir"> 
      <Directory Id="ProgramFilesFolder"> 
       <Directory Id="INSTALLFOLDER" Name="SetupProject1" /> 
      </Directory> 
     </Directory> 
    </Fragment> 

    <Fragment> 
     <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> 
      <!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. --> 
      <Component Id="CMP_SetupProject1"> 
     <File Source="$(var.WIX_WinfrmTest.TargetPath)" /> 
      </Component> 
     </ComponentGroup> 
    </Fragment> 
</Wix> 

ProductComponent.wxs

<?xml version="1.0" encoding="utf-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Fragment> 
     <DirectoryRef Id="INSTALLFOLDER" /> 
    </Fragment> 
    <Fragment> 
     <ComponentGroup Id="ProductComponents"> 
      <Component Id="cmp2C5CB3BF0E009CA9CF5E03CADA38250D" Directory="INSTALLFOLDER" Guid="{C694E446-7B01-42C0-9056-4E09834809E9}"> 
       <File Id="fil3A244EF6571347120C494BB170DC368E" KeyPath="yes" Source="$(var.SetupProject1.TargetDir)\cab1.cab" /> 
      </Component> 
      <Component Id="cmpB6E89A2030E867C94B57A39FE26E1181" Directory="INSTALLFOLDER" Guid="{E8E1247F-627F-420D-97E0-0ABE39A2064C}"> 
       <File Id="fil41A028F0E06C7EEE038806BDA5979087" KeyPath="yes" Source="$(var.SetupProject1.TargetDir)\SetupProject1.msi" /> 
      </Component> 
      <Component Id="cmpD2FFED031AA728C90BED6090228F3AE3" Directory="INSTALLFOLDER" Guid="{660414BB-E061-4EE2-A7E2-471EA41C031F}"> 
       <File Id="fil3F7C931DA08579E26A8F50778E59444A" KeyPath="yes" Source="$(var.SetupProject1.TargetDir)\SetupProject1.wixpdb" /> 
      </Component> 
     </ComponentGroup> 
    </Fragment> 
</Wix> 
+1

Erhalten Sie Ihren Kommentar, ich glaube @smilinger unten hat die richtige Lösung. Sie benötigen die ProductComponents.wxs-Datei nicht, um den Fehler zu beheben. Die ProductComponents.wxs enthält Verweise auf die Ausgabe Ihres Installationsprojekts, dh sie enthält Verweise auf Dateien, die noch nicht vorhanden sind. SetupProject1.msi wäre das Ergebnis von SetupProject.wixproj. Dies funktioniert nicht. –

+0

@RickBowerman Ihr Vorschlag hat funktioniert (danke) und daher habe ich die Antwort von '@ smilinger' als Antwort markiert. Aber ich habe mich gefragt, warum ich dann [diesen Artikel] (http://www.paulsodimu.co.uk/Post/How-To-Create-a-Wix-Installer-For-a-Console-Application) folgte verwendet - verwendet das externe Tool zum Erstellen von 'ProductComponents.wxs'? Da das Thema des Artikels ist, "WIX EIN INSTALLATEUR FÜR EINE KONSOLE ANWENDUNG ZU ERSTELLEN" und ich bemerkte (nach Ihrem Vorschlag), dass das Installationsprogramm erstellt werden konnte, ohne Eternal Tools und 'ProductComponents.wxs' Teil des Artikels zu verwenden – nam

Antwort

1

Entfernen Sie einfach Ihre zweite Datei ProductComponent.wxs OK sein sollte.

Das externe Tool, das in diesem Blog erwähnt wird, ist eine gute Idee, aber das sollte nur ausgeführt werden, indem Sie Ihr winform-Projekt nicht Ihr aktuelles Projekt (das wix-Projekt) aktivieren.

Verwandte Themen