2009-11-25 18 views
7

'dan bağımsız olarak yükseltmek üzere yüklüyorum. Interop.FOOBARLib.DLL için GAC'a yeni bitler yüklemesi gereken bir WiX yükleyiciye sahibim. Sorun, sürüm numarasının eski sürümle aynı olması ve yeni bitlerin yükseltmede GAC'ye yazılmamasıdır. InstallFinalize eyleminden sonra RemoveExistingÜrünler eylemini yürütünüz.Yükleyici, GAC'daki bir dosyayı, sürüm numarası

RemoveExistingÜrünler eylemini kurulumda daha önce taşıyamayız.

foobar.dll bileşeni benim bileşenim değil, bu nedenle tür kitaplığı sürümünü artıramaz (bu, birlikte çalışmanın sürümünün artırılmasına neden olur ve tüm bu sorunlar giderilir).

Sürüm aynı olsa bile, GAC'de yükseltilecek dosyanın KESİLMESİ için bir yol var mı? “Gacutil.exe/f” benzeri bir davranış istiyorum. Sen bileşenler yüklenir hemen önce, dosyayı silmek için özel bir işlem yapmaya çalıştığınız olabilir

<Component Id="Interop.FOOBARLib.dll" Guid="{4E0C173E-34DF-4249-A3A6-5530047FA65B}" > 
    <File Id="Interop. FOOBARLib.dll" Name="Interop.FOOBARLib.dll" KeyPath="yes" Assembly=".net"/> 
</Component> 

cevap

1

birlikte çalışma derlemesi kendinizi yenilemek ve böyle yüksek bir sürümü almak için zorlayabilirsiniz:

bir Meclis bir In-Place güncelleme denir Ne yapmaya çalıştığını
tlbimp /asmversion:1.2.3 /out:Interop.FOOBARLib.DLL foobar.dll 
+0

Bu ben onu çözdüm nasıl. Ayrıca/sysarray param gerekli. – Mike

-1

: gibi

bileşeni görünüyor. not recommended to use vbscript for custom actions, ancak aşağıdaki örnek hala fikri açıklamalıdır.

<CustomAction Id="ForceRemove" Script="vbscript" Execute="deferred"> 
    <![CDATA[ 
    Dim fso 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    fso.DeleteFile("c:\somefile.dll") 
    ]]> 
</CustomAction> 

<InstallExecuteSequence> 
    <Custom Action='ForceRemove' Before='InstallFiles'/> 
</InstallExecuteSequence> 
8

GAC. Bunun düzgün çalışması için hem Interop.FOOBARLib.dll kitaplıklarının aynı derleme sürümüne sahip olması gerekir, ancak daha yeni dll daha yüksek bir dosya sürümüne sahip olmalıdır. Dosya sürümü özniteliği yeni MSI'nın MsiAssemblyName tablosunda bulunmalıdır. Wix varsayılan olarak bu özellik içermez, böylece .wixproj dosyasına aşağıdaki parametreyi eklemek zorunda:

<SetMsiAssemblyNameFileVersion>True</SetMsiAssemblyNameFileVersion> 

Ayrıca bakınız:

In-place updating using Wix

İlgili konular