2010-04-12 24 views
6

Bir WIX yükleyici yazıyorum ve aşağıdaki gereksinimim var:
Yükleme sırasında bir yükleyiciye dosyaya (A adını verelim) mutlak bir yol vermem gerekiyor. Sabit sürücüde zaten var olan ve başka bir programın parçası olan bir COM bileşeni. A dosyasına giden bir yolu bekleyen uygun bir Özel Eylem yazdım. Program Files klasörüne bir dosya olarak A eklemek ve kaldırma işlemi sırasında kaldırılmak istemiyorum. Bunun yerine, yalnızca sabit sürücüyü geçici olarak koymak istiyorum, COM bileşeninin A içeriğini kullanmasına neden olacak Özel Eylemimi ara ve sonra A diskini kaldır. Bu hedefi başarmanın kolay bir yolu var mı?WIX: Yükleme sırasında geçici bir dosya kullanma

İkili Tablosu kullanmayı ve A deposunu kullanmayı denedim, ancak A'yı mutlak yol kullanarak nasıl referans göstereceğimi bilmiyorum. MSI dosyasının dışına bir tane koyabildiğimi biliyorum, ancak her dosya yükleyicinin tek bir MSI'da olmasını istiyorum.

Herhangi bir yardım için teşekkür ederiz.

cevap

6

Bu yaklaşımı kullanırdım.

"A" dosyasını herhangi bir dizine yükleyin. COM bileşenini güncelleştirmek için gereken özel eylemi çalıştırın. Ardından başka bir özel eylem çalıştırın veya dosyayı artık kullanılmadığında kaldırmak için şu anda yazılmış olanı değiştirin. Bu, "A" dosyasının izini bırakmaz ve özel eylemi yalnızca yükleme sırasında çalışacak şekilde planlarsanız, kaldırma işleminde bunun için endişelenmenize gerek kalmaz.

+1

İyi fikir. Bir dosya yükleyeceğimi ve yükleme işleminin sonunda özel işlemimle sildiğimi varsayalım. Kaldırma sırasında eksik bir dosyayla ilgili bir sorun olmaz mıydı? Uninstaller eksik dosyaları hata olarak görmüyor mu? – madbadger

+2

Hayır, kaldırmada bir hata olmayacaktır. Kaldırıcı dosyayı görmüyorsa, sadece onun tarafından esiyor. –

8

MSI'nin yüklü olduğu bir dosyayı silmek, MSI'nın "bozuk" olduğunu ve bunu yapmak için çağırıldığında otomatik olarak onarmayı deneyeceği anlamına gelir. Bu, birkaç durumda otomatik olarak gerçekleşir (ör., Reklamı yapılan kısayollar ve COM kaydı), bu yüzden buna karşı tavsiye ederim. Dosyayı orada bırakın - işini bitirdi ve orada bırakmada hiçbir zararı yok.

+1

Yüklü dosyalar bir IIS sanal klasöründeyse ve bu dosyayı indirecek kişiler olmasa ne olur? – guiomie

+0

Dosya, boş bir bileşen GUID'si ile yüklenebilir; bu şekilde, silinmesi durumunda kendi kendini onarma işleminin başlatılmasına asla neden olmaz. Öte yandan, sadece kurulduğu yerde diskte bırakılması gerektiği fikrine katılıyorum. Boş bir bileşen GUID'si ayrıca, bir RemoveFile girdisi yazmazsanız dosyanın düzgün bir şekilde kaldırılmayacağı anlamına gelir. –

+1

Wix için "kurulum dosyaları" kavramı tartışıldı mı? Bu, logolar, lisans sözleşmeleri, ses dosyaları ve% TMP% klasörüne nelerin çıkarılacağı gibi kaynak dosyalarının yer aldığı ve yol makroları kullanılarak özel eylem koduyla yükleme sırasında başvurulan bir Installshield konsepti. Bunun yardımcı olabileceği durumlar var - belki de konsept Wix'de. –

İlgili konular