Frage

Ich arbeite an einem WIX 3.6-Installationsprogramm für einen Webdienst.Aber ich bin auf ein Problem gestoßen, als ich versuchte, ein HeatDirectory zu verwenden, um die gesamte erforderliche Ausgabe zu sammeln, und egal, was ich versuche, ich erhalte für jede gesammelte Datei die folgende Fehlermeldung:

Das System kann die Datei „SourceDir\Some.dll...“ nicht finden.

Die Fehler treten in WcfService.wxs auf;Das Seltsame daran ist, dass WcfService.wxs automatisch vom Heatdirectory-Abschnitt in meiner Projektdatei (unten) erstellt wird. Wie kann es passieren, dass es explodiert und sagt, dass es diese DLLs nicht finden kann, wenn es überhaupt wissen muss, wo sie sich befinden, um WcfService.wxs zu erstellen? Diese Fehler treten sogar auf, wenn ich aus einem der Tutorials, die ich gelesen habe, ein WIX-Beispielprojekt (wie es ist) herunterlade und erstelle.

Das Ziel:Um einen möglichst großen Teil der DLL-Einbindung zu automatisieren (d. h.Nutzen Sie Harvesting, um Abhängigkeitsprojekte abzuwickeln usw.)

Ich verwende Win 7 64bit und das Projekt ist .NET 4.

Produkt.wxs:

    <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product Id="*" Name="CompleteInstall" Language="1033" Version="1.0.0.0" Manufacturer="Technologies" UpgradeCode="b2ae6aa5-263f-4f9a-a250-8599a7f2cb03">
    <Package InstallerVersion="200" Compressed="yes" />

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

    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFiles64Folder">
        <Directory Id="CommonDir1" Name="Common Directory 1">
          <Directory Id="CommonDir2" Name="Common Directory 2">
            <Directory Id="INSTALLFOLDER" Name="Install Directory"/>
          </Directory>
        </Directory>
      </Directory>
    </Directory>

    <Feature Id="ProductFeature" Title="CompleteInstall" Level="1">
      <ComponentGroupRef Id="WcfService_Project" />
    </Feature>

    <Property Id="WIXUI_INSTALLDIR">INSTALLFOLDER</Property>
    <UIRef Id="WixUI_InstallDir" />
  </Product>
</Wix>

Projektdatei:

<Target Name="BeforeBuild">
    <MSBuild Projects="%(ProjectReference.FullPath)" Targets="Build" Properties="Configuration=$(Configuration);Platform=x86" Condition="'%(ProjectReference.ContentProject)'=='True'" />
    <PropertyGroup>
      <LinkerBaseInputPaths>%(ProjectReference.RootDir)%(ProjectReference.Directory)bin\$(Platform)\$(Configuration)\</LinkerBaseInputPaths>
    </PropertyGroup>
    <HeatDirectory OutputFile="%(ProjectReference.Filename)-temp.xml" 
                   Directory="%(ProjectReference.RootDir)%(ProjectReference.Directory)bin\$(Platform)\$(Configuration)\"
                   DirectoryRefId="INSTALLFOLDER" 
                   ComponentGroupName="%(ProjectReference.Filename)_Project"
                   SuppressCom="true" 
                   SuppressFragments="true" 
                   SuppressRegistry="true"
                   SuppressRootDirectory="true" 
                   AutoGenerateGuids="false" 
                   GenerateGuidsNow="true" 
                   ToolPath="$(WixToolPath)" 
                   Condition="'%(ProjectReference.ContentProject)'=='True'" />
    <XslTransformation XmlInputPaths="%(ProjectReference.Filename)-temp.xml"
                       XslInputPath="XslTransform.xslt" 
                       OutputPaths="%(ProjectReference.Filename).wxs" 
                       Condition="'%(ProjectReference.ContentProject)'=='True'" />
  </Target>

WcfService.wxs:

<?xml version="1.0" encoding="utf-8"?><Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <DirectoryRef Id="INSTALLFOLDER">
            <Component Id="cmpE6EBA3D8D6D4DB0C93E73200C78DCC51" Guid="{C88B5CF9-8807-45DF-AA6F-732437B74BB6}">
                <File Id="fil0118BBA61671E80581CA9C9AA6DD3E8D" KeyPath="yes" Source="SourceDir\Some.dll" />
            </Component>
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <ComponentGroup Id="WcfService_Project">
            <ComponentRef Id="cmpE6EBA3D8D6D4DB0C93E73200C78DCC51" />
        </ComponentGroup>
    </Fragment>
</Wix>
War es hilfreich?

Lösung

Das Problem war das Fehlen des Heatedirectory Preprocessorvariable-Eigentums.Ich habe das Problem mit den folgenden Ergänzungen in meine WIXPROJ-Datei behoben: generasacodicetagpre.

Wie Sie sehen, musste ich zuerst eine konstante Variable für die lokale Verwendung definieren.Ich stellte die Variable gleich dem Wurzelpfad meines WCF-Projekts ein.Zweitens habe ich diese Variable als mein Preprocessorvariable verwendet.Schließlich kann ich die von MSBuild generierten Dateien dynamisch / rekursiv ernten.Nächster Schritt: Nehmen Sie die unnötigen Dateien aus.Ich werde darauf beziehen, dass Link .

siehe unten meinen kompletten wixproj: generasacodicetagpre.

Andere Tipps

Ich erhielt ein ähnliches Problem, wenn ich von der Einrichtung einer grundlegenden Website mit WIX an einen unserer Produktion eingerichtet wurde.

Angenommen, Sie haben ein Beispiel Paul Reynolds" Beispiel und diese ein Parästhesiensbeispiel

Wenn Sie in den Kommentaren der folgenden Seite suchen - http://blogs.planetoftware.com.au/paul/archive/2011/02/20/cupper-a-web-application-installer -with-wix-3,5-and-visual.aspx

Der erste Kommentar erwähnt, der die in Parästhesiensbeispiel gefundenen BEVORBUILD-Methoden ändern. generasacodicetagpre.

Ich musste die Transformation-Eigenschaft entfernen und das Verzeichnis ändere, aber so weit so gut.

hoffe das hilft dir in die richtige Richtung.

update: Wenn Sie setzen generasacodicetagpre.

und addieren: generasacodicetagpre.

Siehe den Kommentar nach unten . Ich mache keine Transformation, also habe ich das ausgeschlossen. An das HeatDeakeirectory sollte es funktionieren, wenn Sie die Proj-Datei unten haben müssen.

Dies wird wahrscheinlich meinen Ruf senken, aber was ich interessant finde, ist http://www.paraesthesia.com Site, ist ich für ein Projekt, aber wenn Sie einen anderen versuchen, war es nicht tuche.
Nach dem Betrachten der Ausgabe schien es das richtige Projekt für Wärme und Kerze zu ergreifen, aber das Licht schien einen zufällig zu nehmen. Nachdem ich die beiden Projekte verglichen hatte, bemerkte ich, dass das Arbeitsprojekt das Projekt hatte, um als das letzte aufgelistete Projekt zu ernten. Wenn ich das Projekt in der .wixproj-Datei in die letzte Referenz verschoben habe, funktionierte es.
Ich verwende zu diesem Zeitpunkt 3.5.2519. Ich weiß, dass es ein alter ist, aber wir haben Projekte, die die Ernte erfordern, um wahr zu sein und tatsächlich in Visual Studio zu ernten.

Ihre WcfService.wxs enthält also:

<File Id="fil0118BBA61671E80581CA9C9AA6DD3E8D" KeyPath="yes" Source="SourceDir\Some.dll" />

Dies bezieht sich auf SourceDir\Some.dll.Diese Datei muss auf dem PC vorhanden sein, auf dem Sie Ihr Projekt kompilieren.Wahrscheinlich müssen Sie den Pfad ändern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top