2012-01-04 21 views
11

Şu anda WiX 3.5 ile oluşturulan bir MSI var. Uygulama .NET 3.5'tedir. Biz bir MSBuild dosyada boostrapper görevi kullanarak bir önyükleyici oluşturur. 6.0a SDK dosyalarına işaret ediyor.Bir WiX yükleyici kullanarak yükseltilmiş izinlerle nasıl yüklerim?

Kullanıcılar, UAC'u açıp yüklediklerinde, setup.exe'u sağ tıklatıp çalıştır yönetici olarak seçmelidirler. Sevdiğim gerçekten hangi

(kullanarak bu diğer yüklemelerde bakınız sarı iletişim) yükseltmesine otomatik istemi setup.exe sahip olmaktır.

Daha da iyisi, MSI'ın bunu yapmasını ve setup.exe ile tamamen ortadan kaldırılmasını isterdim, ama sanırım bu WiX 3.6'nın neyle ilgili olduğunu, değil mi?

Doğru, bu 7.0a SDK requries ApplicationRequiresElevation="true" kullanarak boostrapper oluşturursanız? Önyükleyici daha sonra otomatik olarak yükseltmek ister mi? Bu, uygulamanın bir .NET 4 uygulaması olması gerektiği anlamına mı geliyor? Ben

cevap

13

Biz WiX 3.0 kullandım ... öyle düşünüyorum ve ayrıcalıkları yükseltmek başardık olmaz. Ancak, önyükleyicimizi yükseltmedik. Biz Paket özelliği üzerinden MSI dosyasının kendisinin yükselmiş: Bir yan not olarak

<Package Id="$(var.PackageCode)" 
     Description="$(var.ProductName) $(var.Version)" 
     InstallerVersion="301" 
     Compressed="yes" 
     InstallPrivileges="elevated" <!-- Elevated right here --> 
     InstallScope="perMachine" 
     Platform="x86"/> 

, bizim bootstrapper resmi sertifika ile (v6.0A SDK'dan SignTool.exe kullanarak) imzalanır. Önyükleyicinin de yükseltilmiş ayrıcalıklara sahip olmasına neden olup olmadığından emin değilim.

GÜNCELLEME: Biz yönetici düzeyinde çalıştırılmak üzere çalıştırılabilir gerektirir bizim setup.exe bootstrapper proje üzerinde bir app.manifest dosyası var

. Aşağıdaki örneğe bakın:

<?xml version="1.0" encoding="utf-8"?> 
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" 
       xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" 
       xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
    <security> 
     <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> 
     <!-- UAC Manifest Options 
      If you want to change the Windows User Account Control level replace 
      the requestedExecutionLevel node with one of the following. 

     <requestedExecutionLevel level="asInvoker" uiAccess="false" /> 
     <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
     <requestedExecutionLevel level="highestAvailable" uiAccess="false" /> 

      If you want to utilize File and Registry Virtualization for backward 
      compatibility then delete the requestedExecutionLevel node. 
     --> 
     <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
     </requestedPrivileges> 
    </security> 
    </trustInfo> 
</asmv1:assembly> 
+0

sayesinde, zaten böyle ayarlanmış InstallPrivleges var ama yararlı bir şey yapmak görünmüyor. MSI'yi doğrudan çalıştırmak, yükselemeyecektir. Oh, ama sadece InstallerVersion'ın 300'e ayarlandığını fark ettim. Acaba bu mu acaba… – Jonesie

+0

@Jonesie: Yarından önce iyi bir cevap alamazsan, 'işteyim. Daha fazla bilgi bulabilirim. –

+0

Şerefe dostum! Bunu bir saat süren inşa sunucumuz aracılığıyla çalıştırmam gerekiyor, bu yüzden bir seferde 1 şeyi denemek için oldukça yavaş gidiyor :) – Jonesie

0

Bu eski bir konu olduğunu biliyorum, ancak bir sonraki için biraz zaman kazandırabilir.
Ben ayrıcalıkları ilişkin niteliğini Yürütme diğer yandan özel eylemler üzerinde özellikle custom action had Impersonate=yes...

, bütün yorumu okumak zorunda: her zaman kullanıcı modunda çalıştırılacaktır

<CustomAction Id = "CA.First" Execute ="immediate" ... /> 
<CustomAction Id = "CA.Second" Execute ="deferred" ... /> 

CA.First

ancak CA.Second yükseltirdik ayrıcalıklardır .

Burada olabilir ayrıcalıklar ile ilgili diğer hileler,
ana nokta burada - WiX CustomAction düzeyinde kontrol ayrıcalıklarına izin verir, bu yüzden doğru ayarladığınızdan emin olun.

CustomAction Element

İlgili konular