2013-08-29 81 views
0

在繼續我的安裝之前,我需要檢查是否安裝了.NET 4.5版。這是我的.wxs文件。我已將propertyref和condition放置在標記下。爲什麼這個檢查不起作用?檢查在WiX安裝程序中安裝的.NET?在哪裏放置條件?

即使目標系統上不存在.NET 4.5,安裝仍然繼續。

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Product Id="*" 
      Name="SolidFire Hardware Provider" 
      Language="1033" 
      Version="1.0.0.0" 
      Manufacturer="SolidFire" 
      UpgradeCode="0c60967f-f184-4b8b-a96a-b1caa4a8879e"> 
     <Package InstallerVersion="200" 
       Compressed="yes" 
       InstallScope="perMachine" /> 
     <!--Media Id='2' Cabinet='provider.cab' EmbedCab='yes'/--> 
     <PropertyRef Id="NETFRAMEWORK45"/> 

     <Condition Message="This application requires .NET Framework 4.5. Please install the .NET Framework then run this installer again."> 
      <![CDATA[Installed OR NETFRAMEWORK45]]> 
     </Condition> 

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

     <Feature Id="ProductFeature" Title="InstallProvider" Level="1"> 
      <ComponentGroupRef Id="ProductComponents" /> 
     </Feature> 
     <!-- IRef Id="WixUI_Minimal"/--> 

     <Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER" ></Property> 
     <!--Property WixUIDialogBmp = "logo.bmp"></Property--> 
     <UIRef Id="WixUI_InstallDir"/> 

     <InstallExecuteSequence> 
      <Custom Action="RunInstallScript" After="InstallFiles" >NOT Installed</Custom> 
     </InstallExecuteSequence> 
     <InstallExecuteSequence> 
      <Custom Action='BeforeUninstall' Before='RemoveFiles'>REMOVE="ALL"</Custom> 
     </InstallExecuteSequence> 
     <CustomAction Id="RunInstallScript" 
         ExeCommand="cmd /c install-solidfireprovider.cmd" 
         Directory="INSTALLFOLDER" 
         Execute="deferred" 
         Return="check"/> 
     <CustomAction Id="BeforeUninstall" 
         ExeCommand="cmd /c uninstall-solidfireprovider.cmd" 
         Directory="INSTALLFOLDER" 
         Execute="deferred" 
         Return="check"/> 
    </Product> 

    <Fragment> 
     <Directory Id="TARGETDIR" Name="SourceDir"> 
      <Directory Id="ProgramFilesFolder"> 
       <Directory Id="INSTALLFOLDER" Name="solidfireinstall" /> 
      </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="ProductComponent"> 
       <!-- TODO: Insert files, registry keys, and other resources here. --> 
       <File Id="restinterfacedll.dll" 
         Source="..\vssprovider\x64\$(var.build)\RESTInterfacedll.dll"></File> 
      </Component> 

      <Component Id="vssdll"> 
       <File Id="vsssolidfireprovider.dll" 
        Source="..\vssprovider\x64\$(var.build)\vsssolidfireprovider.dll"></File> 
      </Component> 

      <Component Id="installscript"> 
       <File Id="installscript" 
        Source="install-solidfireprovider.cmd"></File> 
      </Component> 

      <Component Id="uninstallscript"> 
       <File Id="uninstallscript" 
        Source="uninstall-solidfireprovider.cmd"></File> 
      </Component> 

      <Component Id="registerprovider"> 
       <File Id="registerprovider" 
        Source="register_app.vbs"></File> 
      </Component> 

      <Component Id="vshadow"> 
       <File Id="vshadow" 
        Source="vshadow.exe"></File> 
      </Component> 
     </ComponentGroup> 
    </Fragment> 
</Wix> 

回答

0

這看起來不錯,所以你可能還需要:

「呼籲light.exe時包括在MSI聯過程中WixNetfxExtension添加-ext命令行參數」

相關問題