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

关于浏览器在本地安装软件并打开的问题

  •  
  •   mickerwx · 9 天前 · 1431 次点击

    各位 op

    公司的一个需求,之前是本地装好了这个软件.exe ,浏览网址上有一个连接点击后会打开这个 exe

    现在老板想的是,点击这个链接后,浏览器去下载 exe 软件,然后去安装这个 exe 软件安装好之后打开,安装这个 exe 的时候还需要安装一些插件,浏览器能实现这个吗

    我能想到的就是早期点了一些少儿不宜的网站会给你下载一些奇奇怪怪的软件(好像是安装了的),类似病毒的东西,这个实现的逻辑是啥

    26 条回复    2024-10-29 21:52:07 +08:00
    Configuration
        1
    Configuration  
       9 天前
    思路错了

    我这里是在 exe 里实现一个极简的 http server ,设置为开机启动(常驻右下角),然后从浏览器里发送 http 请求到 127.0.0.1 执行对应的指令
    mickerwx
        2
    mickerwx  
    OP
       9 天前
    @Configuration 意思就是电脑上先起一个类似系统服务的 http 服务 A ,浏览器的的原来打开 exe 的连接改成向 A 服务发请求,A 服务是一个本地的服务然后去执行下载安装命令以及打开 exe 服务 我的理解对吗
    mainjzb
        3
    mainjzb  
       9 天前
    > 浏览网址上有一个连接点击后会打开这个 exe

    如果软件已经安装,可以用 url 启动。例如 steam 启动游戏。或 磁力链接唤醒迅雷
    https://stackoverflow.com/questions/24455311/uri-scheme-launching

    > 安装这个 exe 软件安装好之后打开,安装这个 exe 的时候还需要安装一些插件
    这个可以实现,需要管理员运行安装包即可,如果是要给浏览器安装插件,浏览器会弹出来提示,点一下确认。例如 IDM 的浏览器插件
    mickerwx
        4
    mickerwx  
    OP
       9 天前
    @mainjzb 提前安装好软件,使用链接打开这个软件,这个已经做好了, 现在的需求是我们把 exe 安装包放在服务器上,原来的链接点击一下,浏览器开始下载,下载完毕后进行安装,安装成功了打开
    Configuration
        5
    Configuration  
       9 天前
    @mickerwx 就是在你们原来的 exe 软件里面,写一个 http server 进去,提前安装好,提前后台启动。然后就能实现从浏览器上点击打开这个 exe
    zzzyyysss
        6
    zzzyyysss  
       9 天前   ❤️ 1
    你想一想,我给你个链接,你打开后会下载一个 exe 还会安装运行。这怎么可能?
    早期那时候应该是 ie6 吧 ie6 有漏洞可以实现以上需求,现代浏览器不可能。
    zzzyyysss
        7
    zzzyyysss  
       9 天前
    打开特定协议的链接,调起本地应用是可以的。但是不能一键实现 下载 安装 运行。
    DOLLOR
        8
    DOLLOR  
       9 天前
    建议不要想那么复杂,都装 exe 了,都运行 exe 了,那么就把剩下的工作都转到 exe 里干。
    mainjzb
        9
    mainjzb  
       9 天前
    已经安装好了软件,管理员启动什么都能做。你说的这些感觉就像个更新。
    (为什么楼主要一直围绕着浏览器。看了一圈这里和浏览器没有任何关系,直接像 360 给你安装小鸟壁纸一样安装上不就得了。
    NoOneNoBody
        10
    NoOneNoBody  
       9 天前
    @DOLLOR #8
    你理解错了,OP 后面几句都是为了完成“公司的一个需求……”这句的,并不是点击前已经装了某个 exe
    mickerwx
        11
    mickerwx  
    OP
       9 天前
    @zzzyyysss 确实 我也觉得这个应该是实现不了的 浏览器控制操作系统 那太危险了
    mickerwx
        12
    mickerwx  
    OP
       9 天前
    @NoOneNoBody 对 安装软件通过浏览器打开这个软件 目前已经实现了 但是前提是需要安装好这个软件 新需求是安装这个软件的操作是不是也可以放到点击链接的时候实现
    mercury233
        13
    mercury233  
       9 天前
    @mickerwx #12
    那就是 ActiveX ,近 30 年前的技术,现在想用,相较于让用户下载文件手动打开,可能要麻烦十倍
    IvanLi127
        14
    IvanLi127  
       9 天前
    做不了,除非你们已经在目标机器上已经有一个软件作为后门。

    静默安装这可是大大的安全隐患呀。
    thunderw
        15
    thunderw  
       9 天前
    mickerwx
        16
    mickerwx  
    OP
       9 天前
    @thunderw 是吗 我瞅瞅
    bbchannails
        17
    bbchannails  
       8 天前
    卧槽你要写的代码多了去了, 模拟 ui
    cybort
        18
    cybort  
       8 天前 via Android
    可以是可以,不过是跑在沙盒里面的,我觉得类似一个 webapp ,不如直接用 web 实现。
    cybort
        19
    cybort  
       8 天前 via Android
    而且 ClickOnce 需要浏览器支持,不是随便哪个都能用的,可能绕一圈回来变成了给浏览器安装插件再点链接启动😂
    ibinary
        20
    ibinary  
       8 天前
    1.插件可以拉起本地 exe 参考 ndm idm 等
    2.我可以静默安装插件到浏览器(支持市面占有率浏览器)
    3.关于 2 是核心技术.简单提一嘴. 如果有帮助可以让用户去安装下然后尝试拉起 exe.
    cybort
        21
    cybort  
       8 天前 via Android
    @ibinary 他不只是拉起本地 exe 的问题,本地都没有 exe ,等于说插件要绕过浏览器安全机制给你安装一个 exe 。所以这个插件实现的应该是一个应用框架,然后在线获取配置和脚本才行。考虑到造轮子的必要性,不如参考下 chrome 应用去做。
    NGGTI
        22
    NGGTI  
       8 天前
    @mickerwx #12 如果已经安装过 exe 的话,倒是可以实现浏览器点击链接安装新的 exe 之类的。 没有的话倒是不可能做得到。(这属于漏洞了)
    ibinary
        23
    ibinary  
       8 天前
    @cybort #21 那确实.需要本地 exe 在. 如果单纯插件去下载顶多能跳转到目标网页.然后触发下载.用户自己去下载.
    插件去调用啥的.
    renmu
        24
    renmu  
       8 天前 via Android
    那浏览器安全团队可以全部毕业了
    chqome
        25
    chqome  
       8 天前
    应该实现不了,没必要搞这个,用户自己知道下载到哪里了,双击运行就行了
    jadeborner
        26
    jadeborner  
       8 天前
    需要写个注册表,URL Protocol 的地址填下载地址,自动跳转到自定义协议唤起这个下载的 exe 进行安装
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4669 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 09:59 · PVG 17:59 · LAX 01:59 · JFK 04:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.