2014-01-21 82 views
1

這是我寫MSI安裝程序的第一步。在這裏和其他地方有許多關於WIX安裝程序中關於UAC的自定義命令的帖子。但是,沒有發現任何解決我的問題。WIX自定義動作啓動高架應用程序

我需要啓動一個在我的MSI中提升的應用程序。我試圖啓動一個.NET應用程序(編譯爲以Admin身份運行),它將安裝設備驅動程序。如果需要,我使用.NET EXE向用戶顯示「連接設備」提示,然後在非託管代碼中執行實際的驅動程序安裝。

MSI立即引起UAC提示,但應用程序隨後啓動時沒有提升,並失敗。從提升的命令提示符運行不起作用。我在某處讀到,將該清單添加到安裝中可能會有所幫助,但不會。

這裏是我的維克斯代碼:

<?xml version="1.0"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Product Id="*" UpgradeCode="12345678-1234-1234-1234-111111111111" 
      Name="FlashBoot Driver" Version="0.0.1" Manufacturer="ACME Corp" Language="1033"> 
     <Package InstallerVersion="200" Compressed="yes" Comments="Windows Installer Package"/> 
     <Media Id="1" Cabinet="product.cab" EmbedCab="yes"/> 

     <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="ProgramFilesFolder"> 
      <Directory Id="INSTALLDIR" Name="FlashBoot Driver"> 
       <Component Id="AppFiles" Guid="12345678-1234-1234-1234-222222222222"> 
        <File Id="AppFile1" Source="C:\App\Release\Setup.exe"/> 
        <File Id="AppFile2" Source="C:\App\Release\Setup.exe.manifest"/> 
        <File Id="AppFile3" Source="C:\App\Release\Unmanaged.dll"/> 
       </Component> 
      </Directory> 
     </Directory> 
     </Directory> 

     <Feature Id="DefaultFeature" Level="1"> 
     <ComponentRef Id="AppFiles"/> 
     </Feature> 

     <CustomAction Id="OurAction" 
        Execute="deferred" 
        Impersonate="no" 
        Return="ignore" 
        FileKey="AppFile1" 
        ExeCommand="" /> 

     <InstallExecuteSequence> 
     <Custom Action="OurAction" Before="InstallFinalize" /> 
     </InstallExecuteSequence> 

    </Product> 
</Wix> 

回答

0

我通過具有維克斯安裝發射衛星的應用程序,從而啓動驅動程序安裝解決了這個。新的應用程序不需要提升,而驅動程序安裝程序確實需要提升。另一個好處是,新應用程序可以確定是否需要運行32位或64位版本的驅動程序安裝程序。

它仍然會很高興知道是否有辦法啓動需要直接從WIX安裝程序提升的應用程序。

+0

您需要將自定義操作配置爲在沒有模擬的情況下運行延期,這將使其在LocalSystem帳戶下以管理員權限運行。此外,自定義操作必須在InstallFiles標準操作之後進行排序,以確保在嘗試安裝/使用它們時確保所有資源都在計算機上。此方法適用於來自任何MSI軟件包的自定義操作,而不管用於構建它的工具。 –

+0

@Bogdon Mitrache,謝謝你的回覆。我以爲我在做你的建議。正如你所看到的,延期執行和關閉模擬。至於InstallFiles之後的順序,不要在「InstallFinalize」之前完成同樣的事情嗎? –

+0

嗯,對不起,我一定錯過了你的代碼片段,確實你的自定義操作是正確配置和計劃的。安裝日誌說什麼?另外,如果您使用Process Explorer處理您的自定義操作EXE,在哪個帳戶下啓動?也許你的EXE需要在當前的管理員用戶下運行,所以即使它以管理員權限在系統帳戶下運行,它也會失敗。 –