2013-04-26 22 views
6

Sıkıştırılmamış bir dosya içeren bir kurulum paketim var.WiX yanmasına nasıl değiştirilebilir bir dosya eklenir?

<DirectoryRef Id="INSTALLLOCATION"> 
    <Component Id="LocationConfig"> 
    <File Id="LocationConfigFile" 
      Source="LooseFile.Config" 
      DiskId="2" 
      Vital="no" 
      Compressed="no" /> 
    </Component> 
</DirectoryRef> 

Bu dosyanın amacı gevşek olduğundan, yükleme işleminden önce düzenlenebilir. Bu istenen şekilde çalışır.

Gevşek dosyanın önyükleyicinin yanında gevşek bir dosya olarak yer aldığını belirten bir yanma zincirim var. Ayrıca, dosyanın gevşek bir yük olarak manuel belirtilmesine izin vermek için SuppressLooseFilePayloadGeneration'un kullanılmasına dikkat edin.

<Chain> 
    <MsiPackage SourceFile="MyInstaller.msi" 
       Visible="yes" 
       Vital="no" 
       SuppressLooseFilePayloadGeneration="yes"> 
    <Payload Compressed="no" SourceFile="LooseFile.Config" /> 
    </MsiPackage> 
</Chain> 

yanık günlüğü şuna benzer: Dosya değiştiği için

[3860:38D8][2013-04-26T16:42:48]e000: Error 0x80091007: Hash mismatch for path: C:\ProgramData\Package Cache\.unverified\payAC32431CF002C09E2F0B537A32ACA259 
[3860:38D8][2013-04-26T16:42:48]e000: Error 0x80091007: Failed to verify hash of payload: payAC32431CF002C09E2F0B537A32ACA259 
[3860:38D8][2013-04-26T16:42:48]e310: Failed to verify payload: payAC32431CF002C09E2F0B537A32ACA259 at path: C:\ProgramData\Package Cache\.unverified\payAC32431CF002C09E2F0B537A32ACA259, error: 0x80091007. Deleting file. 
[3860:38D8][2013-04-26T16:42:48]e000: Error 0x80091007: Failed to cache payload: payAC32431CF002C09E2F0B537A32ACA259 
[33FC:3A54][2013-04-26T16:42:48]e314: Failed to cache payload: payAC32431CF002C09E2F0B537A32ACA259 from working path: C:\Users\Snixtor\AppData\Local\Temp\{c887e0cf-5038-4e15-95b1-8510d8c96b88}\payAC32431CF002C09E2F0B537A32ACA259, error: 0x80091007. 

Tamam, karma başarısız oluyor. Ama ... Kullanıcının dosyayı değiştirmesine izin vermek istiyorum. Bunu standart bir kurulum paketi ile yeterince yapabilirim, bu yüzden bir bootstrapper ile davranmasını sağlamak için hangi halkaları atlamalıyım?

WiX kullanıcıları posta listesinde this discussion buldum. "Sadece işe yaramalı" diye cevaplar umut verici geliyor, ama sonra tartışma bir hata olabileceğini öne sürüyor gibi görünüyor? Yazar hiç bir hata raporu çıkardıysa, onu bulamıyorum.

Göz önünde bulundurduğum bir alternatif, dosyayı tümüyle önyükleme yükünden hariç tutmak ve daha sonra MSI'yi bulabilmesi için MSI önbellek yoluna el ile kopyalamaktı, ancak yanık asla doğrulamaya çalışmadı. Ama gördüğüm iki sorun:

  1. Önyükleyici yolumdan önbellek yolunu nasıl bulacağımı bulamıyorum.
  2. Yolu biliyor olsam bile, dosyayı kopyalamak için önyükleyiciyi kaldırmam gerekir. Bu bir showtopper olmayabilir, ama bir sinsi şüphesi var ki zor olabilir.

cevap

5

Bu, bugün desteklenmemektedir. Yanık, güvenlik nedeniyle önbellekte yerleştirmeden önce her şeyi doğrular. Yapabilecekleriniz, harici bir dosyayı özel bir Bootstrapper Application'da okuyup sonuçları Variables olarak kalıcı olarak saklamaktır. Bu daha fazla iş olacaktır, ancak Burn, yalnızca oluşturma zamanında eklenen güvenlik sağlama/imzalarla uyuşmayan dosyalara güvenmeyecektir.

+0

Teşekkürler Rob, karanlıkta çekim yapmak yerine durumun * gerçeklerini bilmek harika. Değişkenler ile çalışmayı düşünüyorum, alternatif olabilir. Ben ona bakacağım. Neyse ki üzerinde çalıştığım config dosyası oldukça basit. – Snixtor

+0

Aynı sorunu yaşıyorum ve cevabı anladığımdan emin değilim. Bunun için bir örnek var mı? Temel olarak hem önyükleyiciye (önkoşullar için) hem de kurulumdan önce ikame edilebilen .msi + gevşek dosyalara ihtiyacım var. MSI'yi gevşek dosyalar ile kendi başınıza kurmak, (ön koşullara sahip olduğunuz sürece) mükemmel şekilde çalışır. – lesscode

2

Ben geçerli dizin özelliği yanık bootstrapper setleri asılı ve şöyle bir CopyFile öğesiyle kullanarak bu aynı soruna çalıştı: onunla

<Component Id="SettingsFile" Guid="..."> 
    <CopyFile Id="Copy" Delete="no" DestinationDirectory="INSTALLFOLDER" SourceName="LooseSettings.xml" SourceProperty="CURRENTDIRECTORY" /> 
    <RemoveFile Id="Remove" On="uninstall" Directory="INSTALLFOLDER" Name="LooseSettings.xml" /> 
    </Component> 

vardır büyük ihtimalle bazı sorunlar ama ben m bir başkasının özellikleri için bir yükleyici yazma ve işe yaramaz görünüyor

+0

Ayrıca ihtiyaçlarıma göre işe benzer bir şey elde edebildim. Güzel bahşiş. – lesscode