1
我正在定制Bootstrapper
以根据用户想要安装的内容安装多个MSI。到目前为止一切正常,但我希望能够再次运行安装程序并选择要卸载的MSI。如果所有已安装的MSI都将被卸载,请移除该软件包,否则请将其保留,以便用户可以添加或移除其他MSI。如何在程序窗口中删除它的一部分而不删除它?
我的想法做这样的事情在PlanPackageBegin
事件处理程序:
if (WisState == State.Uninstalling)
{
if (e.PackageId.Equals("MSI1", StringComparison.Ordinal))
{
if (requestMSI1 == RequestState.Present)
{
e.State = RequestState.None;
}
else
{
e.State = RequestState.Absent;
}
}
}
然后在PlanComplete事件处理程序,我开始:
Bootstrapper.Engine.Apply(System.IntPtr.Zero);
但随后捆得卸载以及。
如果不是所有的MSI都将被卸载,我该如何防止卸载我的软件包?