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
Edited by G_Waddell: typo