2012-09-17 8 views
8

WiX kullanarak bir DLL kaydettirmeye çalışıyorum. Şimdi biliyorum ve heat kullanmalıyım ve kayıt defteri bilgilerini benim için çekmem gerektiğini anlıyorum, ancak ısı aşağıdaki hata iletisiyle başarısız görünüyor: heat.exe : warning HEAT5150 : Could not harvest data from a file that was expected to be a SelfReg DLL: C:\Users\seb\Desktop\Development\addin.dll. If this file does not support SelfReg you can ignore this warning. Otherwise, this error detail may be helpful to diagnose the failure: Unable to load file: C:\Users\seb\Desktop\Development\addin.dll, error: 193WiX'i kullanarak DLL kaydedemiyor

Birazdan açıkladım ve bu yazıyı buldum. registering DLLs hakkında daha ayrıntılı bilgi almak istiyorum, ancak mümkünse kendi kendini kaydetme yolundan kaçınmak istiyorum. Ben de aşağıda aşağıdan aşağı DLL'leri kaydetme bahsini de görüyorum, ama ben CLSID, ProgId ve belirtilen diğer bilgileri bile nereden bulabileceğimi bilmek kaydıyla kayıt veya COM nesneleri ile çok iyi bir şey değilim.

Eğer birisi bana doğru yönde işaret edebilir veya bana heat aracılığıyla DLL dosyasını çalıştırmak için ne yapmam gerektiğini açıklarsa büyük bir memnuniyetle karşılanır.

cevap

1

Bu yönetilmeyen/yerel bir DLL mi? Bağımlılık Walker eksik olan bağımlılıkları gösteriyor mu? Genellikle bu, DllRegisterFunction başarısız oldu ve Isı herhangi bir veri ayıklamak anlamına gelmez. Bu sorunu düzeltin ve iyi bir XML meta almalısınız.

+0

Bu, ATL 6.0 kullanılarak oluşturulan bir DLL dosyasıdır. Eğer regserv32'yi çağırırsam her şey yolunda gidiyor ve sistem onu ​​tanıyabiliyor, ancak şimdiye kadar her zaman bir SelfReg olarak yüklendi. – Seb

+0

Bu tür bir sorun çözmek için gerçekten zor. Eğer DLL'i paylaşabilirseniz sizin için çıkarmayı deneyebilirim. Regsvr32'yi yakalamak ve daha sonra wx'lere manuel olarak yazmak için temiz bir makinede bir kayıt defteri anlık görüntüsü aracı da kullanabilirsiniz. Veya COM ve WiX'i ayıklamak için InstallShield değerlendirmesini kullanarak wx'lere geri derleme yapın. Hile ama deneyim gerektirir. –

+0

Gerçekten şirket özelliği nedeniyle DLL paylaşamazsınız, ancak RegSpy kullanmayı denedim ve yaklaşık 8 saat boyunca donduruldu. Sadece verileri çekmeye çalıştığını umuyorum. – Seb

0

Wix heat.exe ile aynı sorunu alıyorum: HEAT5150 uyarısı: SelfReg DLL olması beklenen bir dosyadan veri toplanamadı. Nedeni dll yüke bağımlılık bulamadı. Bence benzer sorunlarla karşılaşıyor olmalısın. Process Monitor aracını çalıştırdım ve heat.exe olayını yakalamak için filtre uyguladım. Sorunun temel nedenini buldum. Temelde tüm bağımlılık dll benim ana dll olduğu yerde aynı konuma koymak zorunda kaldı. Senin dava için addin.dll bağımlı dll'leri olduğu aynı yere işaret etmek gerekiyor.

Bu uyarı hakkındaki aşağıdaki blog, kök nedenini belirlememde bana yardımcı oldu.

http://marc.durdin.net/2009/12/case-of-hidden-exception.html?

+1

Bunu ayarlamak için neredeyse bir gün geçirdikten sonra hala bununla hiçbir yerim yok. Blog yayında gösterilen hata, hedefin attığı bir istisnadan bahseder. Benim durumumda ısı, dosyanın yüklenemediğini söyleyen istisnayı atar. İşlem İzleyicisi'nde ortaya çıkan tüm bağımlılıkları bile ekledim. Hala hatayı alıyorum. Belki de bu DLL'yi kendim kaydettiğimde sıkışıp kaldım. – Seb

11

Bu eski olduğunu biliyorum ama burada bir yanıt eklemek istedim - bunun nedeni, kayıt yapmaya çalıştığınız dll 64 bit dll olduğu ve Heat.exe 32 bit olduğu için dll'yi yükleyememesidir adres alanı. Her neyse, wxs dosyasını oluşturmak için dll'nin 32 bitlik bir sürümünü işaret edin ve bu hatayı almamalısınız.

İlgili konular