1
我有一個即將安裝/更新驅動程序的MSI。不過,我想檢測驅動程序是否正在運行並在開始安裝之前將其關閉。我需要這樣做,因爲客戶正在使用活動目錄部署到計算機。如何檢測我的Wix MSI中運行的軟件?
使用WIX安裝腳本,我該怎麼做?
我有一個即將安裝/更新驅動程序的MSI。不過,我想檢測驅動程序是否正在運行並在開始安裝之前將其關閉。我需要這樣做,因爲客戶正在使用活動目錄部署到計算機。如何檢測我的Wix MSI中運行的軟件?
使用WIX安裝腳本,我該怎麼做?
不知道我是否在這裏丟失了一些東西,但如果您在安裝之前需要關閉驅動程序,那麼在我看來,自定義操作將是最好的方法。
您可以通過使用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.
}
是不是有點困難使用C#?您無法確定.NET運行時已安裝。 – 2012-04-24 15:11:06
當然,這可能是一個問題,但自定義操作不限於.NET代碼。您可以使用CustomAction的FileKey屬性執行自定義本機代碼可執行文件。 – 2012-04-25 06:48:39