程序在安装后连接到未知(?)sqlite数据库

时间:2012-07-27 06:31:11

标签: vb.net sqlite database-connection setup-project vb.net-2010

我使用vb.net(vs2010)和SQLite数据库有一个奇怪的问题:我用安装和部署项目制作了一个安装包,一切似乎都运行正常。我的SQLite数据库安装在CommonApplicationData文件夹和ProgramFiles \ ProductName下的软件下。在安装项目中,我设置了自定义操作,用户可以选择在安装后运行软件: /的startApp = “[CHECK]”

Private Sub MyInstaller_Committed(ByVal sender As Object, ByVal e As InstallEventArgs)
Dim productName As String = Context.Parameters("ProductName")
StartAfterInstall = Me.Context.Parameters.Item("StartApp")
If StartAfterInstall = "1" Then
    Directory.SetCurrentDirectory(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location))
    Shell(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\FB.exe")
End If
End Sub

在ApplicationEvents.vb中,我设置了StartUp:

    AppDomain.CurrentDomain.SetData("DataDirectory", Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData))

这就是奇怪的行为:如果用户在安装后启动应用程序,程序将连接到另一个(?)数据库,而不是安装在 CommonApplicationData 下。如果用户插入数据,似乎一切正常。 关闭应用程序并从desktop / programfiles / users程序菜单启动new后,将程序连接到CommonApplicationData下安装的数据库,但是他看不到安装后启动应用程序所做的更改。所以从desktop / programfiles / users program menu =>启动程序一切都很好,但安装后的第一个(自动)启动是一个问题。我不知道会发生什么,有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您的安装管理员权限是否具有? 如果是,可能会发生以下情况:

  1. 您正在写入ProgramFiles。 Windows将其重定向到管理员%appdata%\ roaming文件夹,因为写入ProgramFiles被视为错误。
  2. 它转到管理员帐户,因为安装具有管理员权限。
  3. 当您从用户帐户启动程序时,将使用特定于用户的%appdata%文件夹,该文件夹为空。
  4. 解决这个问题:

    1. 不要从安装程序启动程序。
    2. 在%appdata%中为您的程序创建一个目录并使用它。