mcloum Posted July 18, 2008 Posted July 18, 2008 Hi all, 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. Imports System.Diagnostics.Process Public Class Form1 Private Sub btnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpen.Click MsgBox("Not here yet") End Sub 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") End Sub 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 End Sub End Class 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. Any ideas? Cheers Mike
PeterH Posted July 18, 2008 Posted July 18, 2008 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) End Sub End Class
mcloum Posted July 20, 2008 Author Posted July 20, 2008 Thanks i will test this later tonight. You would think it would allow exe to be run from CD as most games/apps have a little GUI then you click an install button and the msi is triggered. I will report back with the results later. Mike
powdarrmonkey Posted July 20, 2008 Posted July 20, 2008 Why not make use of autorun.inf? It's a lot simpler.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now