![](/img/trans.png)
[英]WiX Toolset: How to store a file from Binary Table in a Custom Action
[英]Wix Toolset: How to determine installation mode in a Custom Action
是否有机会在“自定义操作”中检查安装模式的类型。 我想为安装和卸载模式创建一个自定义操作,但是根据该模式执行不同的逻辑。
就像是:
public static ActionResult CreateBackUpAction(Session session)
{
//if (InstallType == "Install")
//{
// BackUpFiles();
//}
//else if (InstallType == "Remove")
//{
// DeleteBackUpFiles();
//}
return ActionResult.Success;
}
我知道理想情况下,两种情况下我应该有两种不同的操作,但是我想减少安装程序源中的行数。
您应该能够使用会话对象的Item获取当前安装的属性值。 session [“ REMOVE”](应该为“ ALL”)的值将告诉您这是卸载,而session [“ Installed”]的值则是全新安装。
但是,是的,出于以下几个原因,您应该使用以下类型的条件来调用单独的自定义操作:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa370543(v=vs.85).aspx
对进程外方法的托管代码自定义操作调用并不便宜。 当您可以使用“未安装”作为条件时,您将调用所有该机制并返回。 如果您具有可以更改的功能或维修,那么如果您在通话中没有任何条件,则将再次呼叫并再次返回(什么也没做)。
您没有应对回滚的好方法,因为(例如)如果卸载失败并回滚,我认为您实际上更希望保留要用代码删除的那些备份文件。 换句话说,在安装失败,卸载失败,回滚以及升级现有已安装产品的情况下,不清楚要如何处理这些备份文件。
我也认为,比起一大堆有条件的大型代码,执行某件事的几个较小的,集中的自定义操作更易于处理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.