You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue2实现点击<a>标签下载最新版本exe文件的方法

实现Vue2中自动下载最新版本EXE文件的方案

下面提供几种可行的实现方式,按推荐程度排序:

方案一:后端接口返回最新版本文件名(推荐)

通过后端接口遍历服务器上的EXE文件,自动识别并返回版本号最高的文件名,前端只需请求该接口获取最新下载链接。

前端Vue组件修改(Home.vue)

<template>
    ...
    <a :href="downloadLink" download>
        Latest Version Download
    </a>
    ...
</template>
<script>
export default {
    name: 'Home',
    data() {
        return {
            downloadLink: ''
        }
    },
    mounted() {
        // 请求后端接口获取最新文件名
        fetch('/api/get-latest-exe')
            .then(res => res.text())
            .then(filename => {
                this.downloadLink = filename;
            })
            .catch(() => {
                // 接口异常时降级到默认版本
                this.downloadLink = 'Program_v1.11.0.exe';
            });
    }
    ...
}
</script>

后端示例(Node.js + Express)

const express = require('express');
const fs = require('fs');
const path = require('path');
const app = express();

// 定义接口返回最新EXE文件名
app.get('/api/get-latest-exe', (req, res) => {
    const rootDir = __dirname; // 对应服务器根目录
    fs.readdir(rootDir, (err, files) => {
        if (err) {
            return res.status(500).send('Program_v1.11.0.exe');
        }

        // 筛选符合命名规则的EXE文件
        const exeFiles = files.filter(file => 
            file.startsWith('Program_v') && file.endsWith('.exe')
        );

        if (!exeFiles.length) {
            return res.send('Program_v1.11.0.exe');
        }

        // 按版本号降序排序,取第一个即为最新版本
        const latestFile = exeFiles.sort((a, b) => {
            const parseVersion = name => name.replace(/Program_v|\.exe/g, '').split('.').map(Number);
            const vA = parseVersion(a);
            const vB = parseVersion(b);

            for (let i = 0; i < Math.max(vA.length, vB.length); i++) {
                const numA = vA[i] || 0;
                const numB = vB[i] || 0;
                if (numA !== numB) return numB - numA;
            }
            return 0;
        })[0];

        res.send(latestFile);
    });
});

app.listen(3000);

方案二:静态配置文件维护最新版本

如果没有后端开发能力,可以在服务器根目录放置一个静态JSON文件,手动更新最新版本的文件名,前端请求该文件获取下载链接。

步骤1:创建静态配置文件

在服务器根目录新建latest-version.json,内容如下:

{"filename": "Program_v1.11.0.exe"}

每次更新EXE版本时,修改该文件中的filename值即可。

步骤2:Vue组件修改

<template>
    ...
    <a :href="downloadLink" download>
        Latest Version Download
    </a>
    ...
</template>
<script>
export default {
    name: 'Home',
    data() {
        return {
            downloadLink: ''
        }
    },
    mounted() {
        fetch('/latest-version.json')
            .then(res => res.json())
            .then(data => {
                this.downloadLink = data.filename;
            })
            .catch(() => {
                this.downloadLink = 'Program_v1.11.0.exe';
            });
    }
    ...
}
</script>

方案三:前端直接解析服务器目录(不推荐)

通过配置服务器开启目录浏览功能,前端请求根目录后解析HTML中的文件列表,筛选并比较版本号。此方法存在安全风险,不建议生产环境使用。

前提条件

配置服务器开启目录浏览(例如Nginx添加autoindex on;指令)。

Vue组件修改

<template>
    ...
    <a :href="downloadLink" download>
        Latest Version Download
    </a>
    ...
</template>
<script>
export default {
    name: 'Home',
    data() {
        return {
            downloadLink: ''
        }
    },
    mounted() {
        fetch('/')
            .then(res => res.text())
            .then(html => {
                // 正则匹配所有符合规则的EXE文件名
                const exeFiles = html.match(/Program_v\d+\.\d+\.\d+\.exe/g) || [];
                if (exeFiles.length) {
                    // 排序获取最新版本
                    const latestFile = exeFiles.sort((a, b) => {
                        const parseVersion = name => name.replace(/Program_v|\.exe/g, '').split('.').map(Number);
                        const vA = parseVersion(a);
                        const vB = parseVersion(b);

                        for (let i = 0; i < Math.max(vA.length, vB.length); i++) {
                            const numA = vA[i] || 0;
                            const numB = vB[i] || 0;
                            if (numA !== numB) return numB - numA;
                        }
                        return 0;
                    })[0];
                    this.downloadLink = latestFile;
                } else {
                    this.downloadLink = 'Program_v1.11.0.exe';
                }
            })
            .catch(() => {
                this.downloadLink = 'Program_v1.11.0.exe';
            });
    }
    ...
}
</script>

内容的提问来源于stack exchange,提问作者refresh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 04:45:29