2012-01-04 45 views
11

Hiện tại, chúng tôi có một MSI được tạo với WiX 3.5. Ứng dụng này nằm trong .NET 3.5. Chúng tôi tạo ra một bootstrapper bằng cách sử dụng nhiệm vụ boostrapper trong một tập tin MSBuild. Nó trỏ đến các tệp 6.0a SDK.Làm cách nào để cài đặt với các quyền nâng cao bằng trình cài đặt WiX?

Khi người dùng có số UAC và họ cài đặt, họ phải nhấp chuột phải vào setup.exe và chọn quản trị viên chạy.

Điều tôi thực sự muốn là để setup.exe tự động nhắc nâng cấp (sử dụng hộp thoại màu vàng mà tôi thấy trong các lần cài đặt khác).

Tốt hơn nữa, tôi muốn MSI thực hiện việc này và xóa bỏ hoàn toàn setup.exe, nhưng tôi nghĩ đó là WiX 3.6, đúng không?

Nếu tôi tạo boostrapper bằng cách sử dụng ApplicationRequiresElevation="true" việc này requries SDK 7.0a, chính xác? Liệu bootstrapper sau đó sẽ tự động nâng lên? Điều này có nghĩa là ứng dụng phải là một ứng dụng .NET 4? Tôi sẽ không nghĩ vậy ...

Trả lời

13

Chúng tôi đã sử dụng WiX 3.0 và có thể nâng cao đặc quyền. Tuy nhiên, chúng tôi đã không nâng cao bootstrapper của chúng tôi. Chúng tôi nâng lên bản thân file MSI, thông qua việc sở hữu trọn gói:

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

Là một mặt lưu ý, bootstrapper của chúng tôi được ký kết (sử dụng signtool.exe từ SDK v6.0A) với giấy chứng nhận chính thức của chúng tôi. Tôi không chắc chắn nếu điều này gây ra bootstrapper cũng yêu cầu đặc quyền nâng cao.

UPDATE:

Chúng tôi đã có một tập tin app.manifest về dự án bootstrapper setup.exe của chúng tôi đòi hỏi thực thi được chạy ở cấp quản trị. Xem mẫu bên dưới:

<?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

Cảm ơn, tôi đã cài đặt InstallPrivleges như thế này nhưng dường như không có gì hữu ích. Chạy MSI trực tiếp sẽ không nâng cao. Oh, nhưng tôi chỉ nhận thấy InstallerVersion được đặt là 300. Tôi tự hỏi liệu đó có phải là .... – Jonesie

+0

@Jonesie: Nếu bạn không nhận được câu trả lời hay trước ngày mai, tôi sẽ xem xét kỹ hơn nội dung của chúng tôi khi tôi đang làm việc. Tôi có thể tìm hiểu thêm thông tin. –

+0

Chúc mừng bạn đời! Tôi cần phải chạy điều này thông qua máy chủ xây dựng của chúng tôi mà mất một giờ vì vậy nó khá chậm sẽ cố gắng 1 điều tại một thời điểm :) – Jonesie

0

Tôi biết đây là chủ đề cũ nhưng có thể tiết kiệm thời gian cho chủ đề tiếp theo.
Tôi đã đọc tất cả bình luận, đặc biệt là custom action had Impersonate=yes...

Trên Actions tay Tuỳ chỉnh khác đã Execute thuộc tính liên quan đến đặc quyền:

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

CA.First sẽ luôn thực hiện trong chế độ người dùng, nhưng CA.Second đặc quyền có thể đã nâng lên .

Có thể ở đây là các thủ thuật khác liên quan đến đặc quyền,
điểm chính tại đây - WiX cho phép các đặc quyền kiểm soát trên cấp CustomAction để đảm bảo bạn đặt đúng.

CustomAction Element

Các vấn đề liên quan