Hi All,

I've published a app using Clickonce Deployment for use on our LAN (so I've set it to online only for ease of updates etc)

When I run the setup on my own machine, the app installs and runs with no issue however when I run the setup on my test machine, The program installs and opens but I get an error while running it about an object reference not being set. The application is falling over where a user logs into the system and the app makes a call to a SQL database using SQL native client.

I've looked at the references and System.data is there I've also checked that System.Data and Microsoft.SQLServer name spaces are included.

I next made sure the application was set to a full trust application under the security for ClickOnce deployment. I then set all the application files to Include and made sure the .net framework 3.5SP1 was checked under the prerequiste files and download prerequistes from vendors web site was checked.

But I still didn't get it to work on the test machine I noticed that SQL native Client had not installed on the test machine so I ran the sqlncli.msi off of my SQL 2005 server disk to install it manually but I still can't get it to run.

I know I'm probably missing something but I've never deployed with ClickOnce before so I'm not 100% sure of it.

Here is the code where the system falls:

Private Sub btnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click
        Dim strResult As String = ""
        Dim strTitle As String = ""
        Dim strUserName As String
        Dim strPwd As String
        Dim intUserID As Integer = 0
        Dim objDB As New DataAccessLayer 'custom class for interacting with database
        Dim tblLoginResults As Data.DataTable
        Dim drLoginData As DataRow
        Dim strPrinter As String
        Dim intPrinter As Integer = 0
        On Error GoTo ErrorHandler
        strUserName = Trim(txtUser.Text)
        strPwd = Trim(txtPassword.Text)
        If strUserName <> "" And strPwd <> "" Then
     'pass into function to return datatable
            tblLoginResults = objDB.LoginUser(strUserName, strPwd) 
'runs a Stored Procedure on Database and returns users record.
            If tblLoginResults.Rows.Count = 0 Then
                'no match found
                LoginSuceed = False
                strResult = "Invalid Username and Password"
                strTitle = "Log On Failed"
            Else
                drLoginData = tblLoginResults.Rows(0)
                LoginSuceed = True
                strTitle = "Log on suceeded"
                strResult = "Welcome"
                intUserID = drLoginData("ID")
                'UserID = intUserID
                TeamMemberType = CLng(drLoginData("TeamMemberType"))
                UserName = drLoginData("FirstName") & " " & drLoginData("LastName")
            End If
            objDB.InsertUserAccessLogRecord(strUserName, strPwd, intUserID, "Login to Print Docs", LoginSuceed)
        Else
            LoginSuceed = False
            strResult = "Please enter a Username and Password"
            strTitle = "Log On Failed"
        End If
        MsgBox(strResult, MsgBoxStyle.OkOnly, strTitle)
        If LoginSuceed Then
            'get printer info here and put into array, saves time later on.
            ReDim PrinterArray(PrinterSettings.InstalledPrinters.Count)
            For Each strPrinter In PrinterSettings.InstalledPrinters
                PrinterArray(intPrinter) = strPrinter
                intPrinter = intPrinter + 1
            Next
        End If
        Me.Close()
        Exit Sub
ErrorHandler:
        DisplayError(Err, "Log On")
        LoginSuceed = False
    End Sub

The problem turned out not to be on the remote pc but rather in the way my SQL server was set up....... DOH!

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.