2015-09-25 67 views
1

我已經看到類似這樣的問題,但他們似乎沒有幫助我。Wix未定義的預處理器變量'

我與測試Web應用程序播放。

enter image description here

我加入到這個我RStp.wixproj,我的日子不好過,但它的工作原理,它產生Frags.wxs:

<Target Name="BeforeBuild"> 
    <Exec Command=" &quot;$(WiX)bin\heat.exe&quot; project &quot;..\WebR\WebR.csproj&quot; -cg Portals.Vendor -gg -pog Binaries -pog Content –configuration &quot;release&quot; -platform &quot;AnyCPU&quot; –out &quot;Frags.wxs&quot; " /> 
    <ItemGroup> 
     <Compile Include="Frags.wxs" /> 
    </ItemGroup> 
    </Target> 

我Frags.wxs看起來是這樣的:

<?xml version="1.0" encoding="utf-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Fragment> 
     <DirectoryRef Id="WebR.Binaries" /> 
    </Fragment> 
    <Fragment> 
     <ComponentGroup Id="WebR.Binaries"> 
      <ComponentRef Id="cmp7AE3B693619BAD570BB795DC740F74CA" /> 
     </ComponentGroup> 
    </Fragment> 
    <Fragment> 
     <DirectoryRef Id="WebR.Content"> 
      <Directory Id="dirBB5AA78A6132241A7A39F7899E66D36C" Name="Fold" /> 
     </DirectoryRef> 
    </Fragment> 
    <Fragment> 
     <ComponentGroup Id="WebR.Content"> 
      <ComponentRef Id="cmp434BA57B5F42786DB41F7D30B9C8A2AA" /> 
      <ComponentRef Id="cmp827A8854133966F2160835E612413FA7" /> 
      <ComponentRef Id="cmpF279DD78D3B3BE5386C8535E2A85FC5F" /> 
     </ComponentGroup> 
    </Fragment> 
    <Fragment> 
     <ComponentGroup Id="Portals.Vendor"> 
      <Component Id="cmp7AE3B693619BAD570BB795DC740F74CA" Directory="WebR.Binaries" Guid="{9F6BEFC1-6226-4C1D-A1B0-1C7D6355DB60}"> 
       <File Id="filB23D27862A7D96131D5E2F7C7CCCAA8B" Source="$(var.WebR.TargetDir)\WebR.dll" /> 
      </Component> 
      <Component Id="cmp434BA57B5F42786DB41F7D30B9C8A2AA" Directory="WebR.Content" Guid="{F0733DE8-9B04-4F65-ABA3-954B71E6CC00}"> 
       <File Id="fil85B5BB89317EA74AFB68409ADF6BA4C7" Source="$(var.WebR.ProjectDir)\Default.aspx" /> 
      </Component> 
      <Component Id="cmp827A8854133966F2160835E612413FA7" Directory="WebR.Content" Guid="{ADF5B995-9002-469F-BA2F-9A88621DAF13}"> 
       <File Id="filFD9C307A451419BA8B1308C1786045D2" Source="$(var.WebR.ProjectDir)\Web.config" /> 
      </Component> 
      <Component Id="cmpF279DD78D3B3BE5386C8535E2A85FC5F" Directory="dirBB5AA78A6132241A7A39F7899E66D36C" Guid="{8BFCFDD6-E995-482D-9AA3-4EE8926E9CB0}"> 
       <File Id="filB2AF43969CEF48A8A2E362F2D8E5DD20" Source="$(var.WebR.ProjectDir)\Fold\F2.aspx" /> 
      </Component> 
     </ComponentGroup> 
    </Fragment> 
</Wix> 

我還沒有作出任何改變Product.wxs:

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Product Id="*" Name="RStp" Language="1033" Version="1.0.0.0" Manufacturer="Prive" UpgradeCode="cfbe56e5-e27a-42c3-af88-262956974943"> 
     <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" /> 

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

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

    <Fragment> 
     <Directory Id="TARGETDIR" Name="SourceDir"> 
      <Directory Id="ProgramFilesFolder"> 
       <Directory Id="INSTALLFOLDER" Name="RStp" /> 
      </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. --> 
      <!-- </Component> --> 
     </ComponentGroup> 
    </Fragment> 
</Wix> 
  1. 如何在Frags.wxs中使用A.R.Facade,我該做些什麼?
  2. 如何將Frags.wxs鏈接到Product.wxs?
  3. 如何修復錯誤「未定義的預處理器變量‘$(var.WebR.TargetDir)’UPDATE右鍵點擊RSTP,添加引用,選擇Web PRJ - 固定
  4. 我在哪裏需要添加蠟燭代碼(RStp.wixproj喜歡熱嗎?),應該是什麼樣子?
  5. 如果這將在sourcesafe上,我應該將Frags.wxs包含到源代碼中嗎?
  6. 我需要有一個特定的安裝路徑,看起來像這樣:「E:\的Inetpub \ wwwroot文件」,我怎麼能設置呢?

感謝

回答

2

1)你需要引用您的特性

<Feature Id="ProductFeature" Title="RStp" Level="1"> 
     <ComponentGroupRef Id="Portals.Vendor" /> 
     <ComponentGroupRef Id="WebR.Content" /> 
     <ComponentGroupRef Id="WebR.Binaries" /> 
    </Feature> 

2)有在維克斯傳統意義上的無連接內部的組件/ ComponentGroups。您的所有組件都可以從該項目中的其他WiX文件中引用。

3)在RSTP的Build選項卡下的項目屬性,你可以定義WebR.TargetDir是使熱量在

4.既然你已經使用Visual Studio爲什麼不推出)的目錄路徑只是讓它處理編譯?

5.)由於Frags.xml將在每次我不會將其添加到Source Safe時生成,因此需要鎖定該文件進行編輯。我們使用SVN並添加了自動生成的文件,因爲我們發現在使用安裝程序查看已添加或刪除的文件時它非常有用。

6)看看this

+0

1.在重建,我得到新的Frags.wxs,所以我不能將其添加到Frags.wxs。我將它添加到Product.wxs中,什麼都沒發生。我究竟做錯了什麼? 2.好吧,我必須爲Product.wxs中的Frags.wxs添加一些內容嗎?這是怎麼回事?它應該放在哪裏? 3.我嘗試了很多格式,例如:$(var.WebR.TargetDir)='C:\ something \'。 – Ash

+0

無論我改變(使用引號,雙引號括號)它給我變量定義無效。變量定義的格式應該是-dname = value,其中的值是可選的。 4.確定 5.很有意義 6.看看這個,1-2-3後 – Ash

+0

@RickBowerman你的解決方案似乎與這[post](https://stackoverflow.com/q/47995549/ 1232087)。你有時間看帖子,給我你的建議嗎?先謝謝你。 – nam