Ok im making a little GUI to allow easy installation of smart notebook via a VB form. This is going to be used as an autorun on a CD so i need to get the path that the exe is running from (the CD drive letter) then execute the MSI for smart notebook with a few switches.
This is what i have so far.
Public Class Form1
Private Sub btnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpen.Click
MsgBox("Not here yet")
Private Sub btnSmart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSmart.Click
Process.Start("SmartTools.msi /Passive NOTEBOOK_ONLY=1")
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim AppPath As String
AppPath = Application.StartupPath
lblAppPath.Text = AppPath
as you can see i have got the path that the exe is running from but i dont know how to integrate it with the process.start command.
Give the code below a try. You didn't mention what vesion of VB you're using - the code below works on 2005, .Net Framework v2.
It's probably better to call msiexec.exe directly and then pass the msi file as a parameter. You can specify both a filename and parameters in the process.start method
You can get the full path to the MSI by using & to concatenate the application.startuppath and the MSI filename. You'll need to wrap the whole string in " " ( chr(34) ) in case there's any spaces in the path.
However, you might still have a couple of problems. Firstly, you will need to ensure that the .Net framework is installed on every machine you're going to run the CD on.
Also, I've not tested running it direct from CD, but you may have problems with the default .Net Code Access Security Policy preventing the EXE file from running from the CD Drive. The default policy allows .Net EXEs to run from C: drive but not from network drives for example. I'm not sure about CDROM drives. It can be changed but it's something you'd have to do on each machine before running the CD.
You'd probably be better off with a batch file or a VBScript.
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim myPath As String
Dim myMSI As String
myPath = Application.StartupPath & "\"
myMSI = Chr(34) & myPath & "Smarttools.msi" & Chr(34) & " /Passive NOTEBOOK_ONLY=1"
Process.Start("c:\windows\system32\msiexec.exe", " /i " & myMSI)