最近想给自己制作的安装包添加一个安装之前的预检测功能,用来检测当前环境是否为该工具包支持的环境,如果不是则退出安装过程,本来以为和普通的函数一样,只需要在安装事件里执行一个return操作,而且我也这样干了,然后呢,emmm。我成功把安装环境破坏了,需要手动清理一些文件方可继续执行安装操作,而且为此我还专门给自己的安装包添加了清理脏文件的功能。
然而事实上,我们可以使用一个异常来解决这个问题,微软维护了一个针对安装包的很好的API——InstallException,我们只需要在我们的判断环境里加入这个即可实现回退安装操作,并抛出异常,并且这个异常的内容可以由我们自己设置。而这个功能,我之前是自以为是的使用messageBox加return实现的。而这个API完美的完成了我需要的功能,就很舒服。好了,闲话说完了,该上代码了
private void testInstaller_BeforeInstall(object sender, InstallEventArgs e)
{
if (ture)
{
throw new InstallException("本产品只适用于...");
}
}
如上,我在install事件中的beforeInstall中添加了一个判断条件,如果满足该条件则使用throw new InstallException抛出一个异常,其中描述可以自己填写,然后会自动回退安装步骤,十分好用,此处笔记,以便以后再次用起。