2012-05-30 42 views
4

我想創建快捷方式來卸載引導程序安裝的任何內容。 所以簡單地說,我想做與卸載在添加和刪除程序時所做的一樣的事情。Wix引導程序卸載快捷方式

我發現,去引導程序是安裝在包緩存{GUID} [bootstrappername] .exe文件

一個MSI包,它會安裝還安裝了一個快捷方式到這個引導程序/卸載通話。 然而,問題在於每個構建都會重新生成包的GUID。所以我有些必須將其設置爲 的一個msi屬性。 但我不知道如何做到這一點,在我看來,建設期間不知道GUID,但只有在構建完成後才知道?

是否有另一種方法來確定緩存的引導程序的位置?

回答

-1

您可以使用您在bundle.wxs中定義的包升級代碼來確定位置。

使用到Windows的註冊表路徑卸載捆綁的位置

HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\的Windows \ CurrentVersion \卸載{您的綁定的UpgradeCode}

或64位操作系統

HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \微軟\的Windows \ CurrentVersion \卸載{您的綁定的UpgradeCode}

BundleCachePath包含ŧ他將包含bootstrapper.exe文件名的完整路徑添加到您的包緩存的包緩存中。

您還可以使用值QuietUninstallString包含完整安靜卸載命令或UninstallString啓動卸載非安靜模式。與MsiPackage連鎖

在你Bundle.wxs添加MsiProperty像:

+0

所有這是Burn的實施細節:無證,可能會更改。 –

1

如果您在使用託管BA你可以試試這個代碼

<MsiPackage SourceFile="Setup.msi"> <MsiProperty Name="UNINSTALLER_PATH" Value="[UNINSTALLER_PATH]"/> </MsiPackage>

某處(電話安裝動作之前) ,您需要爲此變量設置如下的值: Engine.StringVariables["UNINSTALLER_PATH"] = string.Format(@"{0}\{1}\{2}\{3}.exe", Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "Package Cache", Engine.StringVariables["WixBundleProviderKey"], ProductName);

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) - %systemdi R%:\ ProgramData

在ProgramData封裝的cache文件夾名稱,其中安裝束緩存

Engine.StringVariables [ 「WixBundleProviderKey」] - 文件夾(GUID)的名稱通過緩存束

產品名稱創建 - 名稱你的引導程序「exe」

最後在你的產品中。WXS您可以創建快捷方式通常的方式,但在「目標」屬性,你需要通過UNINSTALLER_PATH值和「參數」設置=「/卸載」:

<Shortcut Id="Shortcut1" Name="Uninstall" Description="Uninstall" Target="[UNINSTALLER_PATH]" Arguments="/uninstall" WorkingDirectory="Programmenufolder" />

對不起,我的英語:)