SOLUTION: InstallShield制作的安装包中如何添加防火墙例外

今天有个示例程序,需要对安装包中的一个应用程序添加防火墙例外,添加过程不断出现小状况,现将我的分析和解决过程与大家一起分享。

首先说明,我选择的工程类型是Basic MSI工程。

正常我们添加防火墙例外,会想到用netsh firewall命令,那么我就在InstallScript脚本中,通过LaunchAppAndWait调用系统目录下的netsh.exe,然后将其他参数传入即可,这个需求看似简单,但接下来我遇到了一连串的问题:

  • 问题1:安装调用之后(确认已经调用),发现添加失败,防火墙例外列表中没有我要添加的程序。

通过参数输出等方式,确认给入参数正确。同时,我发现如果在安装完成后,在目标机上通过命令行手动添加,就可以成功添加,在这里百思不得其解。这时我意识到一个问题,netsh firewall添加过程中,如果例外的exe不在指定的路径下,那么添加自然失败,那解决办法就简单了,等文件全部复制到目标机上之后,我再调用这段代码不就没问题了吗,高兴地太早,问题又来了。。。

  • 问题2:在Execute Sequence中通过CA调用我的防火墙例外代码,我几乎已经将其调整到了序列的末尾,但依然失败。

这时我意识到,在Windows Installer的安装机制下,我即使最后一个执行CA,其实这个时候,文件依然没有被复制到目标机路径下(虽然在此之前已经执行了MoveFiles Action),于是我调整了CA的In-Script Execution属性,将其改为Deferred Execution(平常我们多设置为Immediate Execution),重新调试,验证了调用防火墙例外代码时文件已经被复制到了目标机上,但依然失败,无语。。。

  • 问题3:调查发现,执行Deferred Execution后,脚本代码中的Property已经失效。

我的防火墙例外代码中用到了INSTALLDIR,而在Deferred Execution阶段,其值为空。好吧,我只好换种方式,将这个CA添加到Finish Dialog的OK Button中才将其解决。解决了前面的问题,还没完。。。

  • 问题4:netsh firewall方式无法实现Vista及Windows Server 2008之后系统下的防火墙例外设置。

这个大家可以参考微软技术文章:http://support.microsoft.com/kb/947709/en-us,在Vista及Windows Server 2008之后系统,我们需要采用类似如下的方式添加:

netsh advfirewall firewall add rule name=”My Application” dir=in action=allow program=”C:\MyApp\MyApp.exe” enable=yes

解决了上述一系列问题,才将一个防火墙例外的需求添加到了我的示例程序中。整个解决过程,感慨颇多,看似简单需求,但往往隐藏的很多问题,对我们如此,对InstallShield初学者更是不易。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
制作mscomm的安装包,你需要以下步骤: 1. 准备安装制作工具:你可以选择使用专业的安装制作软件,如InstallShield、Wise Install等。这些软件提供了一个可视化的界面,方便你创建和编辑安装包。 2. 收集mscomm的必要文件:在制作安装包之前,你需要收集mscomm的相关文件。这包括mscomm.dll和其它依赖文件。 3. 创建安装包项目:打开你选择的安装制作软件,创建一个新的安装包项目。在项目中,你可以设置安装包的名称、版本号、安装路径等。 4. 添加mscomm文件:在安装包项目中,选择添加文件功能,并选择mscomm的相关文件。确保你将文件正确地添加安装包的目标文件夹中。 5. 设置安装选项:根据你的需要,设置安装包的一些选项,如是否创建桌面快捷方式、是否添加到开始菜单等。 6. 编译和生成安装包:完成以上步骤后,点击编译或生成安装包的选项,让软件根据你的设置生成最终的安装包。 7. 测试安装包:在制作安装包之前,进行一次测试安装,确保安装包能够成功安装mscomm,并且运行时没有遇到问题。 8. 分发安装包:安装制作完成后,你可以将其分发给目标用户。你可以通过电子邮件、网站下载、光盘等方式进行分发。 通过以上步骤,你可以在mscomm中创建一个功能完善的安装包,方便用户安装和使用mscomm。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值