2012-10-19 10 views
26

Mam proste rozwiązanie dla mojego projektu, które działa dobrze. Ale nie jestem w stanie pojąć, jak sprawić, by ścieżki Źródła były względne. Czy ktoś może mi pomóc?Względna ścieżka WiX do pliku źródłowego

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

Jak ustawić ścieżkę względem rozwiązania Wix? WiX i wszystkie potrzebne pliki są w tym samym Rozwiązaniu.

Odpowiedz

57

Można użyć ścieżki względnej tak:

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

LUB

Możesz dodać plik konfiguracyjny do projektu w celu określenia wspólnych zmiennych. Aby to zrobić, dodaj nowy plik "WiX Include" do swojego projektu, nazwij go: config.wxi. Następnie w pliku include, można zdefiniować zmienną SourceDir tak:

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

Teraz w pliku .wxs można dodać odwołanie do pliku konfiguracyjnego na górze, ex:

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

Następnie wystarczy odwołać swój SourceDir zmienna tak:

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

Ponadto, istnieją pewne wybudowany w WiX project variables, którego możesz użyć.

+0

To wygląda świetnie! Dziękuję Ci! Czy istnieje możliwość użycia różnych wartości dla var.Sourcedir - w zależności od debugowania lub wydania instalacji? –

+0

Zobacz link, który dodałem. Są wbudowane zmienne projektu, które powinny pomóc. – BryanJ

+0

W kontekście mojego [pokrewnego pytania] (http://stackoverflow.com/questions/21687392/how-can-i-maintain-file-reference-integrity-from-a-wix-setup-library) próbowałem to i okazało się, że plik włączeń nie zadziała w mojej sytuacji. Każda forma ustawień zmiennych nie udostępnia zmiennej dla projektu zależności. Jednak zmienne projektu, z którymi się łączysz, wyglądają tak, jakby działały dla moich celów, ponieważ są stabilne niezależnie od kontekstów innych projektów. Dziękujemy za dodanie tego linku. –

2

Jest wiele sposobów na zrobienie tego, ale osobiście to, co lubię robić, to umieszczanie moich projektów instalatora aplikacji w różnych rozwiązaniach. Najpierw buduję rozwiązanie aplikacji i używam poleceń postbuild do publikowania zawartości w folderze wdrażania.

W moich projektach instalacyjnych ustawiam $ (var.SourceDir) = ".. \ deploy", a następnie $ (var.SourceDir) \ foo.exe dla ścieżki źródłowej.

Powiązane problemy