2012-10-19 127 views
26

我爲我的項目提供了一個簡單的解決方案,效果很好。但我無法掌握如何使源路徑相對。有人能幫助我嗎?WiX源文件的相對路徑

<Component Id="Bla.exe" Guid="*"> 
    <File Id="Bla.exe" Source="D:\Projects\Bla\Bla\bin\Debug\Bla.exe" KeyPath="yes" Checksum="yes"/> 
    </Component> 

如何使路徑相對於Wix解決方案? WiX和所有必要的文件都在同一個解決方案中。

回答

57

可以使用相對路徑,像這樣:

<File Id="Bla.exe" Source="..\bin\Debug\Bla.exe" KeyPath="yes" Checksum="yes"/> 

OR

您可以配置文件添加到項目中來定義公共變量。爲此,請在項目中添加一個新的「WiX Include」文件,將其稱爲config.wxi。然後在你的包含文件,您可以定義一個SourceDir變量,像這樣:

<?xml version="1.0" encoding="utf-8"?> 
<Include> 
    <?define SourceDir = "D:\Projects\Bla\Bla\bin\Debug" ?> 
</Include> 

現在,在您.wxs文件,你可以在上面添加到配置文件的引用,例如:

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

然後,只需引用您SourceDir變量,像這樣:

<File Id="Bla.exe" Source="$(var.SourceDir)\Bla.exe" KeyPath="yes" Checksum="yes"/> 

此外,還有一些建於WiX project variables,你可以使用。

+0

這看起來不錯!謝謝! 是否有可能爲var.Sourcedir使用不同的值 - 取決於調試還是發行版安裝? –

+0

查看我添加的鏈接。有內置的項目變量應該有所幫助。 – BryanJ

+0

在我的[相關問題](http://stackoverflow.com/questions/21687392/how-can-i-maintain-file-reference-integrity-from-a-wix-setup-library)的上下文中,我試過這發現包含文件不適合我的情況。任何形式的設置變量都不會使該變量對依賴項目可用。但是,鏈接的項目變量看起來可能符合我的目的,因爲它們是穩定的,與其他項目的上下文無關。感謝您提供該鏈接。 –

2

有很多方法可以做到這一點,但我個人喜歡做的是將我的應用程序安裝程序項目放在不同的解決方案中。我首先構建應用程序解決方案,然後使用postbuild命令將內容發佈到部署文件夾。

在我的安裝程序項目中,我爲源路徑設置了$(var.SourceDir)=「.. \ deploy」,然後是$(var.SourceDir)\ foo.exe。