V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MrMike
V2EX  ›  C

需要在 windows 上运行一个小程序,用来检查是否已经配置 PHP 的运行环境,请问用哪个语言开发简单些呢? c++, Python 或其它?

  •  
  •   MrMike · 2017-12-20 16:00:20 +08:00 · 3578 次点击
    这是一个创建于 2290 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,如果本地电脑已经配置了 php 的运行环境,就直接运行 php 程序,否则就自动下载相关的程序进行安装配置,请问用哪个语言要简单些呢?

    第 1 条附言  ·  2017-12-20 16:35:43 +08:00
    需要有一个界面来引导终端客户一直 NEXT 进行操作的,不能让用户自己输入命令去查询。
    54 条回复    2017-12-22 09:55:40 +08:00
    ljsh0102
        1
    ljsh0102  
       2017-12-20 16:01:34 +08:00
    F#
    wkan
        2
    wkan  
       2017-12-20 16:05:20 +08:00 via iPhone
    建议直接打包和程序一起打包 php 运行环境
    wkan
        3
    wkan  
       2017-12-20 16:05:47 +08:00 via iPhone
    修正:建议直接和程序一起打包 php 运行环境
    MrMike
        4
    MrMike  
    OP
       2017-12-20 16:09:03 +08:00
    @wkan 不想跟程序一起打包,程序在配置好本地运行环境后,自动下载到本地电脑上。所以需要在下载程序之前就要检查下运行环境。
    MrMike
        5
    MrMike  
    OP
       2017-12-20 16:09:55 +08:00
    @ljsh0102 谢谢
    clino
        6
    clino  
       2017-12-20 16:12:27 +08:00
    建议用 go 试试,虽然我不会 go,但是编译出的工具没依赖,比 python 部署方便,开发效率又比 c++之类的高
    mt7620
        7
    mt7620  
       2017-12-20 16:20:43 +08:00
    C#之类的应该在合适不过了
    ysc3839
        8
    ysc3839  
       2017-12-20 16:22:36 +08:00
    Windows 的话,我觉得 Powershell 会比较方便。Python 也可以的,用 PyInstaller 打包成 exe 也可以直接运行。
    Ellison
        9
    Ellison  
       2017-12-20 16:23:43 +08:00   ❤️ 1
    批处理就行吧,一般 Windows 下配 PHP 环境,都会加上环境变量吧,直接批处理跑下 php -v,如果命令不存在 errorlevel 就是 9009
    Arnie97
        10
    Arnie97  
       2017-12-20 16:23:48 +08:00 via Android
    @mt7620 然后配置 PHP 的运行环境前,先要配置 C#的运行环境(逃
    MrMike
        11
    MrMike  
    OP
       2017-12-20 16:28:02 +08:00
    @ysc3839 @mt7620 如何检查是否安装了指定的软件呢?检查注册表还是有其他方法呢?
    anyx
        12
    anyx  
       2017-12-20 16:30:03 +08:00
    这么简单的需求,还是 windows,必然是批处理或 powershell 或 vbs 或 js
    neoblackcap
        13
    neoblackcap  
       2017-12-20 16:30:30 +08:00
    windows 小程序请使用 C#
    Hellert
        14
    Hellert  
       2017-12-20 16:30:43 +08:00
    使用直接编译成本地代码的,Go, Delphi, VC++都可以。
    omph
        15
    omph  
       2017-12-20 16:33:54 +08:00
    powershell
    MrMike
        16
    MrMike  
    OP
       2017-12-20 16:37:53 +08:00
    @omph
    @anyx 不能让用户自己去输入命令查询,需要有一个界面来展示给用户,用户只需要选择下一步就可以了,所有的检查工作,在程序内部处理。
    araraloren
        17
    araraloren  
       2017-12-20 16:42:57 +08:00
    @MrMike
    Use PowerShell or bat or other script check PHP environment.
    Use C# make a GUI wrapper of that script.
    MrMike
        18
    MrMike  
    OP
       2017-12-20 16:45:24 +08:00
    @araraloren thanks for your reply.
    acros
        19
    acros  
       2017-12-20 16:45:47 +08:00
    批处理脚本 UI 和下载检测不好办。
    还是选.net 派系,要我就直接开 C#了,反正.net framework 版本选的低一点也没关系,这会 php 开发机也不会是 xp 系统的说。
    MrMike
        20
    MrMike  
    OP
       2017-12-20 16:48:53 +08:00
    @acros 很有可能还是 xp 系统。
    BBrother
        21
    BBrother  
       2017-12-20 16:52:19 +08:00
    只有我是装一个文件夹的 exe 然后顺着点吗?
    ysc3839
        22
    ysc3839  
       2017-12-20 16:52:45 +08:00
    @MrMike 环境变量?注册表应该检测不到的,PHP 属于绿色软件,随便扔哪都能用的。
    acros
        23
    acros  
       2017-12-20 16:53:26 +08:00 via iPhone
    @MrMike 这下还不得不用批处理脚本先查环境,然后自带个.net framework 安装包备用。

    以前盗版游戏光盘就是这么弄的....😂
    MrMike
        24
    MrMike  
    OP
       2017-12-20 16:57:21 +08:00
    @acros 哈哈,是这样的哦。
    MrMike
        25
    MrMike  
    OP
       2017-12-20 16:59:38 +08:00
    @ysc3839 所以,如何检查是否配置了 apache 这样的软件呢。用 linux find 这样的命令全盘搜索,可能消耗太大了,或者 ping 本地 localhost 然后再根据返回的数据进行是否支持 php,不晓得这样是否可行,效率如何了。
    ysc3839
        26
    ysc3839  
       2017-12-20 17:01:50 +08:00
    @MrMike 这种情况就不要搜索了,检查一下环境变量,没有的话让用户选择位置。
    MrMike
        27
    MrMike  
    OP
       2017-12-20 17:07:25 +08:00
    @ysc3839 我试试。
    acgnsstech
        28
    acgnsstech  
       2017-12-20 17:10:07 +08:00
    我觉得楼主可以看看 http://mdoc.vip 思路有点像 也是需要安装个 php 环境 XAMPP
    jason19659
        29
    jason19659  
       2017-12-20 17:11:02 +08:00
    批处理
    Hellert
        30
    Hellert  
       2017-12-20 17:11:27 +08:00
    也可以考虑 InnoSetup 或 NSIS 这类安装程序制作工具,环境检查网络下载都可以做,上手比较快。
    MrMike
        31
    MrMike  
    OP
       2017-12-20 17:13:30 +08:00
    @acgnsstech 最终的程序是 php 的,但是跟 mdoc 不一样,就是不想让终端用户去配置环境,也不需要用户晓得是 php 需要什么样的运行环境。
    yaowenz
        32
    yaowenz  
       2017-12-20 17:23:20 +08:00
    C#
    MrMike
        33
    MrMike  
    OP
       2017-12-20 17:25:28 +08:00
    @Hellert 看了下介绍,貌似可以满足,晚上试试。之前用 installshield 没搞成。
    acgnsstech
        34
    acgnsstech  
       2017-12-20 17:25:42 +08:00
    @MrMike

    http://gtk.php.net/ 直接用 php 开发桌面软件~~
    hiboshi
        35
    hiboshi  
       2017-12-20 17:28:52 +08:00
    有想过怎么检查 是否安装 php?
    环境变量,如果没在环境变量中注册,但是 有 php 源码,是否算有 php ?
    ioven
        36
    ioven  
       2017-12-20 20:38:00 +08:00
    autoit,以前很多安装程序使用
    wwwwzf
        37
    wwwwzf  
       2017-12-21 00:23:07 +08:00
    C#
    msg7086
        38
    msg7086  
       2017-12-21 01:44:56 +08:00   ❤️ 1
    但是 PHP 环境你是绕不过的。而且一不小心就会搞出事情来。

    以前见到过个傻逼桌面安卓模拟器,用的 VirtualBox,然后我装上了它,它把我 VirtualBox 里的虚拟机清空了,塞上了自家的虚拟机镜像。
    看着我就不高兴了,就把它卸载了。然后它很自觉地帮我把 VirtualBox 整个卸载了。

    回到主题,如果用户已经安装并定制了一份 PHP,你是打算复制一份出来吗?还是直接原样跑用户的环境呢?
    如果用户装的 PHP 版本和你想要的不一样怎么办呢?
    如果用户不用 Apache 而用 IIS 你怎么办呢?
    如果你自己要用到的扩展和用户自己用的扩展冲突了要怎么办呢?
    loading
        39
    loading  
       2017-12-21 06:40:34 +08:00 via Android
    批处理就能完成
    cchange
        40
    cchange  
       2017-12-21 07:26:31 +08:00 via iPhone
    @msg7086 说道虚拟机 qemu 虚拟机是不是满足需求呢? 但 qemu 是不是得装虚拟网卡?
    ipwx
        41
    ipwx  
       2017-12-21 08:49:11 +08:00
    别用系统的 php,还是都用自己的更好。至少自己的 php 可以自己管理目录,自己管理环境。
    UnknownR
        42
    UnknownR  
       2017-12-21 10:33:23 +08:00
    用 powershell,看看$env 变量里有没有 php,没有就调 http-request 下载,执行外部程序安装,要界面的话就用 c#写
    janxin
        43
    janxin  
       2017-12-21 10:37:06 +08:00
    php 啊...
    oott123
        44
    oott123  
       2017-12-21 10:39:10 +08:00
    我觉得终端用户机器上装了 php 的肯定少,而且又要符合版本,搞不好还要部分扩展什么的,到时候用户不小心改了自己的环境你的软件跑不起来了又很麻烦……这又不是 vcredist 或者 .net fx 有完善的管理机制。

    所以我建议:不如不管用户装没装自己都下一个。

    至于用啥,我觉得 InnoSetup 之类的工具就行啊……
    MrMike
        45
    MrMike  
    OP
       2017-12-21 14:01:48 +08:00
    @UnknownR 这个好像不得行,我本地电脑装了 phpStudy ( PHP 环境集成包),在环境变量里面,没有设置 PHP,也是可以运行 PHP 的。
    MrMike
        46
    MrMike  
    OP
       2017-12-21 14:06:43 +08:00
    @oott123 如果都单独装,apache 和 mysql 需要使用端口,如果之前已经配置了,不判断就进行重新安装的话,就运行不了。所以,还是想在安装之前,对本地电脑进行检查下,看是配置了 apache 还是 iis,及其 php,mysql 版本等等,如果已经配置,但是不适合项目运行的话,就提示用户进行处理或者修改端口。
    @msg7086
    MrMike
        47
    MrMike  
    OP
       2017-12-21 14:07:59 +08:00
    @UnknownR 谢谢,需要有界面。刚才看了下 WPF 的使用,还没摸到门路。
    xsliang
        48
    xsliang  
       2017-12-21 14:11:48 +08:00
    照顾老机器又要有界面 选 framework2.0,用 winform 快速完成
    msg7086
        49
    msg7086  
       2017-12-21 17:25:30 +08:00
    #46 @MrMike 你这需求有些不明确啊。

    需求:端口冲突判断
    提问:如何检查 PHP 环境

    ermmm

    @cchange 联网的话要装网卡吧。
    我主要是吐槽这暴力的安装程序……
    hoythan
        50
    hoythan  
       2017-12-21 17:39:21 +08:00   ❤️ 1
    Electron 用 js 写一个程序,支持 win mac linux 等设备
    ZXCDFGTYU
        51
    ZXCDFGTYU  
       2017-12-21 18:38:05 +08:00
    ```bash
    CHECKPHP=$(curl http://127.0.0.1/info.php)

    if($CHECKPHP!=="hello"){
    ./installer.sh
    }
    ```


    ```php
    echo "hello";
    ```
    why1
        52
    why1  
       2017-12-21 19:00:36 +08:00 via Android
    那么懒,没客服吗
    txlty
        53
    txlty  
       2017-12-21 19:15:22 +08:00
    php 本身就可以写,找个可用的 php to exe,打包封装一下。https://www.v2ex.com/t/187672 官网没了找其他地方下
    如果你会用 VS 编译 php 源码的话,也可以自己编译封装一个单文件 exe,包含了 php 解释引擎和需要运行的代码。C 语言方面,只要理解 zend_eval_string()这一个函数的作用就够了。
    flyico
        54
    flyico  
       2017-12-22 09:55:40 +08:00
    Windows 下 还要 GUI 除了 C#没有更好的了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5456 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 09:08 · PVG 17:08 · LAX 02:08 · JFK 05:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.