以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [原创]winrar自解压后运行程序  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=179372)

--  作者:洮沙
--  发布时间:2022/8/20 15:07:00
--  [原创]winrar自解压后运行程序

用WinRAR制作自解压安装程序挺方便的,尤其是FB这种免安装的程序,但是遇到提取文件后运行程序的问题,如果将发布的项目文件.exe关联,能够自动启动,但是启动后连接数据库报错(用的是本地ACCESS数据源,感觉用ProjectPath获取的路径在自动启动时不一样),手动用桌面快捷方式启动又正常。


图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20220820145825.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20220820145843.png
图片点击可在新窗口打开查看

 
图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20220820150537.png
图片点击可在新窗口打开查看

有什么办法,将图一生成的快捷方式,在图二自动启动?

貌似图三能够用命令设置,这方面纯粹不懂,麻烦老师帮忙看一下。



 

[此贴子已经被作者于2022/8/20 15:10:19编辑过]

--  作者:有点蓝
--  发布时间:2022/8/20 15:19:00
--  
ProjectPath不应该有问题,因为是项目文件foxex的路径,不是exe的路径。测试弹出ProjectPath的值看看。
--  作者:洮沙
--  发布时间:2022/8/20 15:27:00
--  

项目BeforeConnectOuterDataSource事件全部代码:

Dim fl As String = ProjectPath & "data\\基础账套.mdb"
Dim fl2 As String = ProjectPath & "project\\data\\基础账套.mdb"
Dim Err As String
Dim s As String
If e.name = "Access数据源1" Then
    If FileSys.FileExists(fl) Then \'如果指定的文件存在
        s = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & fl & ";Persist Security Info=False;Jet OLEDB:Database Password=******"
    Else
        If FileSys.FileExists(fl2) Then \'如果指定的文件存在
            s = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & fl2 & ";Persist Security Info=False;Jet OLEDB:Database Password=******"
        Else
            Messagebox.Show("【基础账套】连接失败,请检查【" & fl & "】数据库文件是否存在?", "提示")
            Return
        End If
    End If
    If Connections.TryConnect(s, Err) = True Then
        e.ConnectionString = s
    Else
        MessageBox.Show("【基础账套】无法连通,原因:" & Err)
    End If 
End If

如果用自解压提取文后自动执行弹出以下错误信息:


此主题相关图片如下:微信截图_20220820152635.png
按此在新窗口浏览图片


  ProjectPath 好像没有起作用?

[此贴子已经被作者于2022/8/20 15:27:53编辑过]

--  作者:有点蓝
--  发布时间:2022/8/20 15:30:00
--  
BeforeConnectOuterDataSource应该使用e.ProjectPath 

对于发布后的程序e.ProjectPath已经包含了project目录,不需要再加

--  作者:洮沙
--  发布时间:2022/8/20 15:45:00
--  
一个“e”解决问题了,感谢蓝版!