InstallShield CMD检测端口占用

IS版本及工程类型:InstallShield 2015,Basic MSI

function checkPort()
STRING szPortNumber, svLine, szCmdLine;
NUMBER nvFileHandle, nLocation;
begin   
    szPortNumber = "8080";
     //把8080端口的使用情况,以txt文档形式写入到系统临时文件夹里(FOLDER_TEMP是IS提供的系统临时文件夹,直接调用)
    szCmdLine = "netstat -an | find \"" + szPortNumber + "\" > \"" + FOLDER_TEMP ^ "stdout.txt\"";
    LaunchApplication( "cmd.exe", "/C " + szCmdLine, "", SW_HIDE, 20000, LAAW_OPTION_WAIT );
    OpenFileMode (FILE_MODE_NORMAL);
    if(OpenFile (nvFileHandle, FOLDER_TEMP, "stdout.txt") < 0) then
        MessageBox ("OpenFile failed to open " + FOLDER_TEMP ^ "stdout.txt", SEVERE);
        abort;
    endif;
    while GetLine (nvFileHandle, svLine) = 0    
        nLocation = StrFind(svLine, "LISTENING") + StrFind(svLine, "ESTABLISHED");
        if (nLocation > 0 ) then
            MessageBox("[Port:" + szPortNumber + "] is already occupied,please reinstall after resolving.", WARNING);
            return -1;
        endif;
    endwhile;
    CloseFile (nvFileHandle);
end;

注意,cmd.exe后面,一定要加"/c ",不加的话后续命令不执行。下面用两个简单的bat脚本尝试启动TIM.exe说明下。

1.【lauchTIMNotIncludeC.bat】

cmd start C:\Users\Jayce\"Program Files"\TIM\Bin\TIM.exe
pause

没有加"/c ":只执行到cmd,后续命令未执行,启动程序失败。

未启动TIM.exe程序.png

2.【lauchTIMIncludeC.bat.bat】

cmd /C start C:\Users\Jayce\"Program Files"\TIM\Bin\TIM.exe
pause

加"/c ": 成功启动TIM程序。


成功启动TIM.exe程序
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 命令简介 cmd是command的缩写.即命令行 。 虽然随着计算机产业的发展,Windows 操作系统的应用越来...
    Littleston阅读 3,359评论 0 12
  • 运行操作 CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本、文件系统版本) CM...
    小明yz阅读 2,874评论 0 8
  • 运行操作 CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本、文件系统版本) CM...
    小沐子_IT阅读 2,618评论 0 4
  • win7 cmd管理员权限设置 net localgroup administrators 用户名 /add 把“...
    f675b1a02698阅读 5,417评论 0 11
  • 一、命令行 1. calc-----------启动计算器 2.certmgr.msc----证书管理实用程序 3...
    小小辛_c阅读 727评论 0 2