我想创建引导程序已经安装任何快捷键卸载。 所以,只是我想要做同样的事情将要添加和删除程序时为卸载做。
我发现,去引导程序被安装在包缓存{GUID} [bootstrappername] .EXE
一个MSI包,它会安装还安装了一个快捷方式到这个引导程序/卸载通话。 然而问题是,包的GUID是在每次构建再生。 所以我一些如何必须将其设置为MSI属性。 但我无法弄清楚如何做到这一点,在我看来,该GUID是不是建设构建完成后,但只有在知道了吗?
有另一种方式来确定缓存的引导程序的位置?
我想创建引导程序已经安装任何快捷键卸载。 所以,只是我想要做同样的事情将要添加和删除程序时为卸载做。
我发现,去引导程序被安装在包缓存{GUID} [bootstrappername] .EXE
一个MSI包,它会安装还安装了一个快捷方式到这个引导程序/卸载通话。 然而问题是,包的GUID是在每次构建再生。 所以我一些如何必须将其设置为MSI属性。 但我无法弄清楚如何做到这一点,在我看来,该GUID是不是建设构建完成后,但只有在知道了吗?
有另一种方式来确定缓存的引导程序的位置?
如果您在使用托管BA你可以试试这个:
在你Bundle.wxs在链MsiPackage添加MsiProperty,如:
<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) - 路径%SYSTEMDIR%:\ ProgramData
在ProgramData包装的cache文件夹名称,其中安装包缓存
Engine.StringVariables [ “WixBundleProviderKey”] - 文件夹(GUID)的名称按缓存束创建的
产品名称 - 你的引导程序“EXE”的名字
最后在你的Product.wxs您可以创建快捷方式通常的方式,但在“目标”属性,你需要通过UNINSTALLER_PATH值和“参数”设置=“/卸载”:
<Shortcut Id="Shortcut1" Name="Uninstall" Description="Uninstall" Target="[UNINSTALLER_PATH]" Arguments="/uninstall" WorkingDirectory="Programmenufolder" />
对不起我的英语不好 :)
您可以使用捆绑确定位置的UpgradeCode你在bundle.wxs定义。
使用注册表路径捆绑软件的Windows卸载位置
HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CurrentVersion \卸载{您的绑定的UpgradeCode}
或64位操作系统
HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \微软\的Windows \ CurrentVersion \卸载{您的绑定的UpgradeCode}
值BundleCachePath包含FULLPATH包括您bootstrapper.exe文件名到您的包缓存在包缓存。
您还可以使用值QuietUninstallString包含完整安静卸载命令或UninstallString启动卸载非安静模式。