2014-04-04 32 views
5

Yüklemede, tek bir sunucuda birden fazla örneğe sahip olabilen bir windows hizmetim var. Yükleyicinin tek bir örneği yükseltmesi gerekiyor. Yükleyici, Örnek Dönüştürmeleri kullanır, ancak büyük yükseltmelerin nasıl olmasını istediğim gibi çalışacağından emin değilim. işe büyük bir yükseltme için WiX - Bir çok örnek yüklemede büyük bir yükseltme gerçekleştirme

, benim anlayış örneklerini bu formda tanımlanan bu yüzden, Ürün Kodu değişikliğini sahip olmasıdır:

<Instance ProductCode="*" 
      UpgradeCode="{SOMEGUID}" 
      ProductName="Instance 1" 
      Id="Instance1"/> 

msi tarafından yeni bir örneğini kurmak için başlatılabilir:

msiexec.exe /i "installer.msi" /n {PRODUCTCODE} REINSTALL=ALL REINSTALLMODE=vamus 
:

msiexec.exe /i "installer.msi" TRANSFORMS=:Instance1 MSINEWINSTANCE=1 

Ancak sonra çok belirli bir örneğinde yükseltme çalıştırmak için bulduk tek yolu arıyor bu biçimdir 210

Ürünün kodu, büyük güncellemeler için otomatik olarak üretiliyorsa, bunun ne olduğunu bilmiyorum, bu yüzden komut argümanlarına giremem.

Bunun yerine Instance UpgradeCode veya InstanceID veya ProductCode kullanarak bir yükseltme başlatmanın bir yolu var mı? Her ikisi de statik kalacak. Alternatif olarak, argüman olmadan msi'yi başlatabilir, UI iletişim kutusundaki mevcut bir örneği (kayıt defterini denetleyerek) seçebilir ve msi'yi bu örnek için yükseltme moduna zorlamak için uygun özellikleri ayarlayabilir miyim?

+0

Bunu faydalı bulabilirsin: http://sklyarenko.net/blog/2011/09/14/revisited-multiple-instance/ –

+0

Örneklerin her biri bir kez kurulduktan sonra, ürün kodu olan bir ürün olduğunu düşünüyorum. .Yükseltme yapıyorsanız, yeni ürününüzün sık sık büyük bir yükseltme yapması ve yükseltme tablosunu, değiştirilmesi gereken önceki ürünle değiştirecek olan şeylerle doldurması gerekir. Örneklerle ilgili çok şey bildiğimden değil, yeni örneğinizin eski örneklerinizi yükseltmesine neden olan yükseltme tablolarını kullanmanın geleneksel yaklaşımını denediniz. Her ürünü tek tek yeni sürüme geçiremeyeceğinizi mi söylüyorsunuz, çünkü hepsi aynı güncelleme kodunu paylaşıyorlar? Aynı sürümü? – PhilDW

+0

Belirli bir makinede ** ürün kodları **, ** yükseltme kodları ** ve ** ürün isimleri ** bir ** tam listesini ** elde edebilirsiniz sadece söylemek için: PowerShell: Yüklü bir MSI dosyası için Yükseltme Kodunu buluyorum? **] (https://stackoverflow.com/questions/46637094/how-can-i-find-the-upgrade-code-for-an-installed-msi-file/46637095 # 46637095). –

cevap

1

ben 3 ayrı örnekleri yükseltme işlemek için şimdiye kadar ne yaptık geçerli: Benim Mülkiyet Yükseltme sabit Guid olduğunu

<InstanceTransforms Property="Upgrade"> 
    <Instance Id="I01" ProductCode="*" ProductName="Product Instance 1" UpgradeCode="55a25a09-5979-438d-91dd-67755012a288"/> 
    <Instance Id="I02" ProductCode="*" ProductName="Product Instance 2" UpgradeCode="a27eb2e5-9aa8-4d09-b6c0-df717875c310"/> 
    <Instance Id="I03" ProductCode="*" ProductName="Product Instance 3" UpgradeCode="d705720d-3703-4b17-817e-bd51edd9abea"/> 
</InstanceTransforms> 

iken. Bununla, ben ayrı ayrı yeni yükler için- bu hattı kullanarak güncellemeleri ile 3 örneğini işleyebilir, eklemek MSINEINSTANCE = 1-:

msiexec/i MyProduct.msi MSINEWINSTANCE = 1 Dönüşümler = ": I01"

+0

Bu, yaptığım şeyden daha fazlasıdır. Sorunun açıldığı anda çalışıp çalışamayacağını kesin olarak söyleyemem, ancak o zamandan beri wix çoklu görev desteği uzun bir yol kat etti ve kesinlikle şimdi işe yarayacak. – AndyK

8

Eğer yükseltme kodu beri bunu için ürün kodunu ihtiyaç Oldukça emin bir ürünlerin ailesini ve tek tek tanımlar. (Burada

Get-WmiObject -Class win32_product 

bir tablo biçiminde yılında çıkışını almak için farklı bir yoldur IdentifyingNumber:

Yangın yukarı PowerShell ve ürün kodu ile yüklü ürünlerin listesini almak için bu komutu çalıştırın ProductCode'tır):

Get-WmiObject Win32_Product | Format-Table IdentifyingNumber, Name, Version 

Ürün kodunu, derlenmiş M'nin Özellik tablosunda da bulabilirsiniz. SI kullanarak Orca (MSI SDK tool):

İşte

enter image description here

+0

Ayrıca bakınız: http://stackoverflow.com/a/24340339/129130 –

+0

Orca aracı benim için yaptı! – Antebios