silently execute a MSI package from C#

寵の児 提交于 2020-01-13 06:43:34

问题


Newbie question, let me try and make this as clear as possible. I have a program that needs to silently execute a msi package (well multiple but that's not the problem)

The MSI packages are contained in a folder located in the same directory as my program. I've given it a simple name of "InstallFiles" for the time being.

I'm not keen on using the full path name eg. C:\my program\another directory\another directory etc because it'll be put on multiple PC's, old and new, in which case the drive letter can change. So far I have:

install.StartInfo.FileName = "msiexec";
install.StartInfo.Arguments = "/i F:\\InstallFiles\\JRE.msi";
install.Start();
install.WaitForExit();

However, when its launched it only gives me the Windows Installer switch information and then terminates, how do I get it to run and how would I go about changing the file path?


回答1:


The executing of .msi file should be like .exe file that here is your answer : https://stackoverflow.com/a/12436300/359170

start the application with this code :

Process.Start("yourfile.msi"); 

and it don't need the full path, it adds current directory to the file name you written there.

But

System.IO.Directory.GetCurrentDirectory();

gets the current executed file directory. And you can get the file path by adding just the name of the file to it like this :

 string path = System.IO.Directory.GetCurrentDirectory() + "\\yourfile.msi";



回答2:


use with the following switch:

/q[n|b|r|f]

    Sets user interface level
    n - No UI
    b - Basic UI
    r - Reduced UI

Check http://msdn.microsoft.com/en-us/library/windows/desktop/aa367988%28v=vs.85%29.aspx for detailed commandline options.



来源:https://stackoverflow.com/questions/12448180/silently-execute-a-msi-package-from-c-sharp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!