2013-07-18 19 views
7

Wix 3.7'deyim. Bir MSI'm var ki, bir kayıt defteri anahtarı kurmak istiyorum (anahtarın zaten mevcut olup olmadığını kontrol etmek zorunda olduğu için bir Özel Eylem aracılığıyla).Komut satırı satırları, WiX paketinden MSI'ya geçiyor

Bir bootout projesindeki bir Paketin makine durumunu değiştiremediğini (kayıt defterinin ayarlanması gibi) anlayabiliyorum. Bu nedenle, <MsiProperty> aracılığıyla bir komut satırı bağımsız değişkenini geçirmeye çalışıyorum, ancak önyükleyici için günlük dosyamda bir komut satırı bağımsız değişkeni olarak görünmüyor.

  1. Bundle'da bir kayıt defteri anahtarı ayarlamak mümkün müdür?
  2. Değilse, MSI'ye iletilmek üzere bir komut satırı argümanı (veya başka bir özel veri parçası) 'u nasıl ekleyebilirim?
  3. MSI nasıl okursa onu okuyabilirim (bir komut satırı argümanı olsun ya da başka bir şey var mı başka).

Bundle: Sizin MSI ihtiyacı

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Bundle 
      Name="MyInstallerBootstrapperLocalDb" 
      Version="1.0.0.0" 
      Manufacturer="some company" 
      UpgradeCode="PUT-GUID-HERE"> 
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" /> 
    <Chain> 
     <MsiPackage Id="MyInstallerInstaller" 
        SourceFile="$(var.MyInstallerInstaller.TargetPath)" 
        Compressed="no"> 
     <!-- TODO - if this is being set correctly, the MSI needs to 
        interpret it and set up the key--> 
     <MsiProperty Name="SetLocalDb" Value="yes"/> 
     </MsiPackage> 
    </Chain> 
    </Bundle> 
</Wix> 
+1

MSI komut satırındaki bir özelliğin bir PUBLIC özelliği olması gerekir. Ve kamu mülkiyeti, başkentlerde hepsi budur. Yani, SetLocalDb değil, SETLOCALDB olması gerekir. Ve MSI’da da tüm başlıklar olarak ilan edilmesi gerekiyor. – RobG

cevap

9

şöyle bir özellik tanımlamak için:

<MsiPackage SourceFile="<package>.msi" Id="SomeId"> 
    <MsiProperty Name="SOMEPROPERTY" Value="[SomeProperty]" /> 
</MsiPackage> 

sonra:

<Property Id="SOMEPROPERTY" Value="Default"/> 

Daha sonra paket bu özelliği ayarlayabilirsiniz Bu özelliği, burada açıklandığı gibi Önyükleyicide ayarlayabilirsiniz: SomeProperty Tanımlamak gereken bir yanık değişkendir WiX Bootstrapper: How do I set burn variables from the command line?

Uyarı:

<Variable Name="SomeProperty" Type="string" Value="DefaultValue" /> 

Güncelleme: MSI yılında

sonra bu özelliği temel bir kayıt defteri arama yapabilir:

<RegistrySearch Id="GetSomeValue" Root="HKLM" Key="SOFTWARE\<Manufacturer>\[SOMEPROPERTY]" Name="<ValueName>" Type="raw" /> 
+0

Bu çalışır. Bence asıl mesele, bundle projemizin bir non-wix setup.exe dosyası haline getiren ve paketimde tanımladığım bir şeyi yok sayan bir GenerateBootstrapper yapmasıdır. –