2013-08-05 23 views
1

我有一個WiX安裝程序腳本,它引用位於我的Visual Studio Solution文件夾根目錄中的文件夾中的文件。在我的.wixproj中,我試過設置Properties | Tool Setting | Linker如何在WiX安裝程序腳本中實際使用LinkerBindInputPaths PropertyGroup

-b $(SolutionDir)\WixSource 

,並得到一個錯誤,因爲$ SolutionDir變量的中間範圍內是有空間的文件夾。所以,我想

-b "$(SolutionDir)\WixSource" 

,並得到一個錯誤抱怨周圍使用的名稱報價,我應該放一個雙反斜線的,顯然,在這空間的文件夾結束。 - 不能這樣做,因爲它位於$(SolutionDir)宏內。

因此,遵循關於SO的建議,我打算嘗試使用LinkerBindInputPaths PropertyGroup,但文檔嚴重缺乏此屬性的實際使用。

我跑維克斯3.7,下面是不允許的...

雖然谷歌搜索,有人告訴我,它需要去<Package>元素中,如:

<Package ...> 
    <PropertyGroup> 
     <LinkerBindInputPaths ???/> 
    </PropertyGroup> 
</Package> 

WiX文檔@http://wix.sourceforge.net/manual-wix3/msbuild_task_reference_light.htm

指定鏈接器應用於查找所有文件的活頁夾路徑。這相當於light.exe中的-b開關。 命名的BindPath是通過爲所提供的路徑加上等號(「=」)前綴2個或更多個字符的桶名稱而創建的。

沒有使用Google搜索找到任何示例,我無法解讀「2個或更多字符的存儲桶名稱」是什麼,或者是否存在任何規則。

我希望能夠像$(var.SolutionDir)\WixSource指定的東西,但需要一些幫助確定如何解決這個問題?

+0

FWIW,WiX不是「腳本」。如果把這個神話放在一邊,學習會更容易。 –

回答

4

LinkerBindInputPaths是一個項目組,而不是一個屬性組。它進入你的.wixproj MSBuild項目文件。例如:

<ItemGroup> 
    <BindInputPaths Include="$(MSBuildProjectDirectory)" /> 
    <BindInputPaths Include="$(WIX_ROOT)src" /> 
    <BindInputPaths Include="$(WIX_ROOT)bin" /> 
    <BindInputPaths Include="$(WIX_ROOT)" /> 
</ItemGroup> 
+0

所以,文檔是錯誤的。好。我最終得到了一個解決方案,可以在不使用ItemGroup的情況下爲我工作,但至少正確的用法現在記錄在SO上! –

+0

這將導致Visual Studio拋出一個有關無效參數的錯誤,除非像這樣添加'InProject'元數據:' false 'see:(http: /stackoverflow.com/questions/19515397/deploy-multiple-wcf-webservices-with-wix-toolset-wrong-svc-files) –

+0

@SteveSheldon,這通常不是真的 - 它現在對我來說很好,現在與VS2013一樣, 例如。 HeatDirectory可能需要命名綁定路徑嗎? –

相關問題