2015-11-26 3 views
5

Ich benutze Wix Toolset 3.8 und ich versuche ein MSI-Projekt zu erstellen. Während des Aufbaus habe ich einen Fehler wie diesen:Warum gibt es einen Fehler in einem Wix-Projekt?

Severity Code Description Project File Line 
Error  '.', hexadecimal value 0x00, is an invalid character. Analyzer light.exe 0 

Hat jemand mit solch einem Problem konfrontiert? Jede Hilfe wird geschätzt! Ich bin ein Anfänger in diesem Bereich ... Hier ist der Quellcode:

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> 
    <?define ProductName="Traffic_Analyzer" ?> 
    <?define ProductVersion="1.0.0.0" ?> 
    <?define ProductCode="*"?> 
    <?define UpgradeCode="9e36a864-f98e-446a-b2e6-dd77567a4031"?> 
    <?define Manufacturer="Leanenka_Dzianis"?> 
    <?define licenseRtf="C:\Users\DzianisL\Desktop\license.rtf"?> 

    <Product Id="$(var.ProductCode)" Name="$(var.ProductName)" Language="1049" Version="$(var.ProductVersion)" 
      Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> 
    <!--1033 on 1049 - Russian language maintaines--> 
    <Package InstallerVersion="200" Compressed="yes" /> 

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

    <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="ProgramFilesFolder"> 
     <Directory Id="INSTALLLOCATION" Name="$(var.ProductName)"> 

      <Component Id="ProductComponent" Guid="*"> 
      <File Id='Sniffer' DiskId='1' Source='C:\Users\DzianisL\Documents\Visual Studio 2015\Projects\Sniffer\Sniffer\bin\Release\Sniffer.exe'/> 
      </Component> 
     </Directory> 
     </Directory> 

     <Directory Id="ProgramMenuFolder"> 
     <Directory Id="ApplicationProgramsFolder" Name="$(var.ProductName)"> 
      <Component Id="ApplicationShortcutSniffer" Guid="4CEBD68F-E933-47f9-B02C-A4FC69FDB551"> 
      <Shortcut Id="ShortcutSniffer" 
       Name="Sniffer" 
       Description="$(var.ProductName)" 
       Target="[INSTALLLOCATION]Sniffer.exe" 
       WorkingDirectory="INSTALLLOCATION"/> 
      <RemoveFolder Id="ApplicationProgramsFolder" On="uninstall"/> 
      <RegistryValue Root="HKCU" Key="Software\$(var.Manufacturer)\$(var.ProductName)" Name="installed" Type="integer" Value="1" KeyPath="yes"/> 
      </Component> 
     </Directory> 
     </Directory> 
    </Directory> 


    <Feature Id="ProductFeature" Title="$(var.ProductName)" Level="1"> 
     <ComponentRef Id="ProductComponent" /> 
     <ComponentRef Id="ApplicationShortcutSniffer" /> 
    </Feature> 
    <Property Id="WIXUI_INSTALLDIR" Value="INSTALLLOCATION" ></Property> 
    <WixVariable Id="WixUILicenseRtf" Overridable="yes" Value="$(var.licenseRtf)"/> 
    <UIRef Id="WixUI_InstallDir"/> 




    </Product> 

</Wix> 

Antwort

5

Es gibt eine open bug report in der WiX issue tracker, die mit einem Null-Zeichen wird der Fehler zeigt an, dass endet auf Ihre RTF-Datei verwendet.

Ich würde überprüfen, ob Ihr license.rtf mit null Ende endet dann das Zeichen aus der Datei gestutzt (oder eine neue RTF-Datei ohne null erstellen)

+0

Danke, Sie haben recht! Ich habe gerade die Lizenz mit Notepad geöffnet und dort fand ich das NULL-Zeichen. Nach seiner Entfernung hat alles funktioniert! –

+1

@DziLean: Froh, dass es funktionierte und willkommen zu Stack Overflow. Sie können anderen mit dem gleichen Problem helfen, indem Sie nützliche Antworten aufwerten und die Antwort akzeptieren, die Ihnen bei der Lösung Ihres Problems geholfen hat. –

+0

Danke für das Teilen, ich habe diesen Fehler noch nie gesehen. FWIW Ich empfehle immer, eine Windows XP-VM zu starten und mit Wordpad das RTF zu erstellen. Der Grund dafür ist, dass das RichText-Steuerelement, das in Windows Installer enthalten ist, sehr alt und wählerisch ist, so dass der Ansatz mit dem kleinsten gemeinsamen Nenner dazu beiträgt, Probleme auf der Straße zu beseitigen. Man würde wahrscheinlich niemals mit einem RTF enden, das mit einem Nullzeichen endet, wenn dieser Ansatz befolgt wird. –