2012-04-20 72 views
1

我有一個即將安裝/更新驅動程序的MSI。不過,我想檢測驅動程序是否正在運行並在開始安裝之前將其關閉。我需要這樣做,因爲客戶正在使用活動目錄部署到計算機。如何檢測我的Wix MSI中運行的軟件?

使用WIX安裝腳本,我該怎麼做?

回答

2

不知道我是否在這裏丟失了一些東西,但如果您在安裝之前需要關閉驅動程序,那麼在我看來,自定義操作將是最好的方法。

您可以通過使用VB腳本或調用託管程序集來編寫自定義操作。我更喜歡後者(個人偏好C#而不是VB)。在維克斯源文件中的自定義動作將看起來像:

聲明其表示組件中的二進制元素被稱爲成:

<Binary Id="BIN_DriverManagement" SourceFile=".\DriverManagement.CA.dll /> 

然後定義的自定義動作,調用組件的方法,包括:

<CustomAction Id="CACT_ShutDownDriverAction" BinaryKey="BIN_DriverManagement" DllEntry="ShutDownDriver" /> 

的最後一步將schedulling自定義操作進入安裝順序:

<InstallExecuteSequence> 
    <Custom Action="CACT_ShutDownDriverAction" After="LaunchConditions" /> 
</InstallexecuteSequence> 

實際上,我不確定何時應該安排這樣的自定義操作,這取決於需求。

自定義操作功能,在C#中實現應[CustomAction]從Microsoft.Deployment.WindowsInstaller namespace屬性預先考慮,所以它可能是這樣的:

[Microsoft.Deployment.WindowsInstaller.CustomAction] 
public static ActionResult ShutDownDriver(Session session) 
{ 
    // Shut down the driver here. 
} 
+0

是不是有點困難使用C#?您無法確定.NET運行時已安裝。 – 2012-04-24 15:11:06

+0

當然,這可能是一個問題,但自定義操作不限於.NET代碼。您可以使用CustomAction的FileKey屬性執行自定義本機代碼可執行文件。 – 2012-04-25 06:48:39

相關問題