如何让应用在启动屏(Splash Screen)运行时检测应用目录下的EXE文件是否存在
启动屏阶段检测指定EXE存在性的实现方案
首先在代码文件顶部导入IO命名空间,用于文件操作:Imports System.IO
修改后的完整代码如下,检测逻辑会嵌入到原有启动进度的验证阶段:
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim splash As Splash_screen = CType(My.Application.SplashScreen, Splash_screen) ' 自定义需要检测的EXE文件名,后续增减检测项直接修改此数组即可 Dim targetExes As String() = {"App1.exe", "App2.exe", "App3.exe"} Dim missingList As New List(Of String) Dim progressTips() As String = {"Starting Up...", "Verifying apps...", "Finalizing"} For i As Integer = 0 To progressTips.Length - 1 splash.UpdateProgress(progressTips(i), CInt((i + 1) / progressTips.Length * 100)) ' 在验证组件的进度阶段执行EXE存在性检测 If i = 1 Then For Each exeName In targetExes Dim fullPath = Path.Combine(Application.StartupPath, exeName) If Not File.Exists(fullPath) Then missingList.Add(exeName) End If Next ' 检测到缺失文件的处理逻辑,可根据业务需求调整 If missingList.Count > 0 Then MessageBox.Show($"缺失必要运行组件:{Environment.NewLine}{String.Join(Environment.NewLine, missingList)}", "启动失败", MessageBoxButtons.OK, MessageBoxIcon.Error) Application.Exit() Return End If End If System.Threading.Thread.Sleep(1500) Next End Sub End Class
逻辑说明
- 完全兼容你原有启动屏的进度流程,检测动作和「Verifying apps...」提示同步执行,用户感知连贯
- 待检测EXE统一存放在
targetExes数组中,后续要新增/删除检测对象直接修改数组内容即可,无需调整核心逻辑 - 采用
Path.Combine拼接应用根目录和EXE文件名,避免手动拼接路径时出现的斜杠兼容问题 - 目前缺失文件时默认弹出错误提示并终止启动,你可以根据需求修改该分支逻辑,比如忽略非核心文件、跳过敏检等
- 如果需要把启动提示改成中文,直接替换
progressTips数组内的文本即可,比如改为{"正在启动...", "正在验证组件...", "正在完成启动"}
内容的提问来源于stack exchange,提问作者GYFS Jr.
相关产品推荐
相关产品推荐

