1

我将逻辑部分分成片段 *.wxs 文件,但是如何使用 Votive 和 Visual Studio 将它们包含在我的主要 Product.wxs 中?我在主 wxs 文件中引用该组件,但收到并错误提示找不到该组件。我假设我没有正确链接这些。

Error 13 Unresolved reference to symbol 'Component:RegistryEntries' in section 'Product:{A5CA93A2-91B2-46CA-B681-07451DCCCDCB}'.

<ComponentRef Id="RegistryEntries"/>

注册表设置.wxs

<?xml version="1.0" encoding="UTF-8" ?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<?include $(sys.CURRENTDIR)\Config.wxi?>

<!-- Registry entries -->
<Fragment Id="RegistrySettings">
<DirectoryRef Id="TARGETDIR">
  <Component Id="RegistryEntries" Guid="{MY-GUID}">

    <!-- Create registry keys and grant user rights -->
    <!-- Add Registry Keys and default values as necessary -->
    <RegistryKey Root="HKLM" Key="$(var.RegKey)" Action="create">
      <Permission User="$(var.DefaultUser)" GenericAll="yes" ChangePermission="yes"/>
    </RegistryKey>

    <!-- Connection Info registry keys and values -->
    <RegistryKey Root="HKLM" Key="$(var.ConnectionRegKey)" Action="create">
      <Permission User="$(var.DefaultUser)" GenericAll="yes" ChangePermission="yes" />

      <!-- Main Connection settings -->
      <RegistryValue Name="SoapURL" Value="$(var.DefaultSoapUrl)" Type="string"/>
    </RegistryKey>
    ...

  </Component>
</DirectoryRef>
</Fragment>
</Wix>

产品.wxs

<?xml version="1.0" encoding="UTF-8" ?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
 xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">

<!-- Use pre-processor variable to include other wix variable definitions / components -->
<?include $(sys.CURRENTDIR)\Config.wxi?>

<Product Id="a5ca93a2-91b2-46ca-b681-07451dcccdcb" 
       Name="$(var.ProductName)" 
       Language="1033"
       Version="$(var.ProductVersion)" 
       Manufacturer="$(var.ProductManufacturer)" 
       UpgradeCode="$(var.UpgradeCode)">

<Package InstallerVersion="200" Compressed="yes" Keywords='Installer' Description="App Installer"
  Languages='1033' SummaryCodepage='1252' />

<!-- Define custom variables for icons and license files -->
<WixVariable Id="WixUILicenseRtf" Value="docs\liscensing.rtf" />
<WixVariable Id="WixUIBannerBmp" Value="images\fplogo1.bmp" />
<WixVariable Id="WixUIDialogBmp" Value="images\fp-setup.bmp" />

<!-- Add Install conditions such as .Net version required and privileges -->
<PropertyRef Id="NETFRAMEWORK35_SP_LEVEL"/>
<Condition Message="This application requires .NET Framework 3.5 SP1. Please install the .NET Framework then run this installer again.">
  <![CDATA[Installed OR (NETFRAMEWORK35_SP_LEVEL and NOT NETFRAMEWORK35_SP_LEVEL = "#0")]]>
</Condition>

<Condition Message="You need to be an administrator to install this product.">
  Privileged
</Condition>

<Media Id="1" Cabinet="My.cab" EmbedCab="yes" />

<!-- Default to installing for all users / everyone -->
<Property Id="ALLUSERS">1</Property>


<!-- Win64="$(var.Win64)" -->
<Property Id="INSTALLDIR">
  <RegistrySearch Id="RegistrySearch" Type="raw" Root="HKLM" 
            Key="Software\[Manufacturer]\[ProductName]" Name="InstallLocation" />
</Property>

<!-- Add Remove Programs properties -->
<Property Id="ARPPRODUCTICON" Value="MyIcon.exe" />
<Property Id="ARPHELPLINK" Value="$(var.ArpHelpUrl)" />

<!-- Base Install Directory  - Define Directory Structures -->
<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="ProgramFilesFolder">
    <Directory Id="APPLICATIONFOLDER" Name="MyWix">
      <Directory Id="ArchDir" Name="$(var.ArchDir)" />
      <Directory Id="LogDir" Name="$(var.LogDir)" />
      <Directory Id="TempDir" Name="$(var.TempDir)" />
    </Directory>
  </Directory>

  <Directory Id="ProgramMenuFolder" Name="Programs">
    <Directory Id="ApplicationProgramsDir" Name="MyWix" />
  </Directory>

  <Directory Id="DesktopFolder" Name="Desktop" />
</Directory>

<!-- Application Directory and Structure-->
<DirectoryRef Id="APPLICATIONFOLDER">
  <Component Id="My.exe" Guid="MYGUID">
    <File Id="My.exe.file" Name="$(var.Project.TargetFileName)"
          Source="$(var.Project.TargetPath)" DiskId="1" KeyPath="yes" Vital="yes">
    </File>
  </Component>
</DirectoryRef >



<!-- Features to install, these could include the main exe, help docs, and scanner components -->
<Feature Id="Complete" Title="Product" Description="The complete package"
         Display="expand" Level="1" ConfigurableDirectory="APPLICATIONFOLDER">
  <Feature Id="MainApplication" Title="Installer Wix" Level="1">
    <ComponentRef Id="My.exe"/>
    <ComponentRef Id="RegistryEntries"/>
    <ComponentRef Id="ApplicationStartMenuShortCut" />
  </Feature>
</Feature>
</Product> 
</Wix>
4

1 回答 1

1

没关系,由于某种原因,我在 Visual Studio 2008 中创建新的 .wxs 文件后没有链接,可能是因为它最初是作为 .wxi 文件创建的。

我排除并重新包含该文件,进行了清理和构建,并且现在可以正常工作。

于 2010-02-03T20:41:06.833 回答