WIX

2011-03-11 35 views
5

'da iki kök dizin olması mümkün mü Bu dosyaları hem C hem de D sürücülerinde dağıtmam gerekiyor. Örneğin, A dosyası C sürücüsüdür ve B dosyası D sürücüsüne gider. Wix'in yalnızca bir kök dizininin olmasına izin verdiğini biliyorum. Bunu başarabileceğim bir yol var mı?WIX

Bir çözüm Wix Xml kök dizin olarak C ayarlayabilir ve Wix Xml yoluyla C dizinine gidin dosyaları dağıtmak için olduğunu biliyoruz. D dizinine dağıtılması gereken dosyalar daha sonra özel bir eylemle dağıtılmak zorundadır.

Ancak Özel eylemler kullanmaktan kaçınmak istiyor ve aynı Wix Xml kullanarak hem (C ve D sürücüleri) dosyaları dağıtmak istiyorum.

cevap

12

Tüm dizin yapısı her zaman "TARGETDIR" köküne sarılmalıdır. Ancak hiç kimse, yapının geri kalanını ihtiyaç duyduğunuz şekilde tanımlamanızı sınırlamaz.

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="INSTALLLOCATION" Name="My location"> 
    ... 
    </Directory> 
    <Directory Id="DATA_FOLDER" Name="Data"> 
    ... 
    </Directory> 
    <Directory Id="DATABASES_FOLDER"> 
    ... 
    <Directory> 
    </Directory> 

Şimdi installLocation farklı bir sürücüde olması DATA_FOLDER veya DATABASES_FOLDER ayarlayabilirsiniz: Aşağıdaki örnek bakınız. Benim için iyi çalışıyor.

+0

Eğer Wix varsayılan olarak tanımlanan sistem diski (Windows dizininde ile Disk) ve büyük kullanılabilir sürücü olmasını örnek DATA_FOLDER için definining cevabınızı tamamlayabilirsiniz? – dendini

+0

Kullanılabilir en büyük sürücünün alınması WiX değil, Windows Installer davranışıdır. Yukarıdaki örnek sadece dizin yapısını tanımlar ve DATA_FOLDER değerini ayarlamadığınız sürece varsayılan Windows Installer davranışına geri döner. Yapmanız gereken şey, SetDirectory özel eylemi ile DATA_FOLDER tanımlamak veya komut satırından doğru değeri iletmektir: 'msiexec/i package.msi DATA_FOLDER = ... ' –

+0

Sadece başka bir soruyu okuyun ve ne Muhtemelen WindowsVolume MSI özelliği için arıyor: http://msdn.microsoft.com/en-us/library/windows/desktop/aa372817.aspx –