AdvancedInstaller设置当用户选择中文路径时弹窗警告

问题需求:
当我们的程序用到一些插件功能,而这些插件又不识别中文,不支持中文路径的话,我们的程序安装路存在中文的话就没办法正常使用插件了。
解决方案:
在制作一键安装包的时候在用户选择安装路径的时候检查路径中的字符。当路径中包含中文,就弹窗提醒:所选路径不能包含中文
1.制作一个用户自定义动作(Custom Actions)
制作方式见我另外一个博客:http://blog.csdn.net/qq_20849387/article/details/78421482
修改里面代码:

using Microsoft.Deployment.WindowsInstaller;
using System.Text.RegularExpressions;
namespace JudgeInstallPath
{
    public class CustomActions
    {
        [CustomAction]
        public static ActionResult CustomAction1(Session session)
        {
            //获取安装路径
            string installpath = session["APPDIR"];

            Regex regexzhe = new Regex("[\u4e00-\u9fa5]");

            if(regexzhe.IsMatch(installpath))
            {
                //"ISZH" 为 Advanced Installer 添加的安装参数,如有需求可自行更改
                session["ISZH"] = "true";
            }
            else
            {
                session["ISZH"] = "false";
            }

            return ActionResult.Success;
        }
    }
}

生成文件为:JudgeInstallPath.CA.dll。我们需要这个文件
2.导入这个文件到AdvancedInstaller
AdvancedInstaller设置当用户选择中文路径时弹窗警告_第1张图片
选择刚刚生成的Dll就好了
3.设置参数(ISZH)
AdvancedInstaller设置当用户选择中文路径时弹窗警告_第2张图片
直接在上图那个位置右键添加就可以了
3.设置FolderDlg对话框的下一步按钮的事件(published events)
在User Interface -Dialogs 点击 FolderDlg,选中“下一步”如下图:
AdvancedInstaller设置当用户选择中文路径时弹窗警告_第3张图片
看到下一步下面的窗口是这个样子的:
AdvancedInstaller设置当用户选择中文路径时弹窗警告_第4张图片
点New新建事件,在argument 选我们做好的dll,点击OK
AdvancedInstaller设置当用户选择中文路径时弹窗警告_第5张图片
再点一个new
AdvancedInstaller设置当用户选择中文路径时弹窗警告_第6张图片
修改一下 Display a specific dialog 这个事件,双击或者选中点击Edit…
AdvancedInstaller设置当用户选择中文路径时弹窗警告_第7张图片

注意这几个事件的位置。一定要有先后顺序
AdvancedInstaller设置当用户选择中文路径时弹窗警告_第8张图片
上图中箭头所指的事件一定需要先执行才可以,调整顺序可以选择任一个事件点方框里的Up或者Down来调。
4.修改弹窗信息。
当你做完这些事情你会发现这里多了一个窗口
AdvancedInstaller设置当用户选择中文路径时弹窗警告_第9张图片
当你编辑成我这样子就可以了哇。

你可能感兴趣的:(AdvancedInstaller设置当用户选择中文路径时弹窗警告)