通过进程参数调用 Embed MSI
Calling an Embed MSI thru argument of process
我想做的是将我们公司使用的某些扫描仪的 msi 安装程序嵌入到一个帮助台界面中,该界面允许用户 select 他们想要的扫描仪并单击一个按钮来安装驱动程序。
private void MSIexec(string arguments)//Run MSIexec = MSIexec("Enter Command");
{
Process process = new Process();
process.StartInfo.FileName = @"C:\Windows\System32\msiexec.exe";
process.StartInfo.Arguments = arguments;
process.Start();
这是我使用命令 MSIexec(Argument Here)创建的进程 运行 该进程加上相应的参数以通过菜单项 select 安装 msi。我已将 msi 安装程序作为资源添加到我的 Visual Studios 2012 WPF 项目并将其设置为嵌入式。我已经测试了这个过程,它会工作,如果我输入安装程序的完整路径名,安装程序将使用命令和参数。我正在尝试将安装程序包含在最终编译的 EXE 中,这样用户就不必拥有或下载安装驱动程序所需的文件,他们只需 运行 我的 exe 并单击安装即可安装驱动程序,而无需他们在某个文件夹中有文件只是 运行 exe and go.
主要问题是我可以通过参数调用嵌入的 msi 还是需要将它加载到其他地方才能通过参数调用。此外,当事情 运行 通过测试或一旦 exe 准备就绪时,程序会将这些文件存储在 (C:\Temp) 中的什么文件????如果这是正确的文件夹,也许我可以在参数中引用它,这样我知道安装程序上的路径不会改变。
感谢您提供的任何帮助。
tmitcham
您需要将 MSI 文件从可执行文件的资源中提取到某个安全位置,然后从那里启动 MSI 安装。会是这样的:
https://www.codeproject.com/Articles/4221/Adding-and-extracting-binary-resources
How can I self-extract a binary resource (executable) using C++?
它必须存放在安全的地方,因为在维修或其他此类维护操作时可能需要它,因此不应丢弃它。
我不会打扰 msiexec.exe 电话。有一个非常好的 API MsiInstallProduct() 很容易 P/Invoke 到。
https://msdn.microsoft.com/en-us/library/windows/desktop/aa370315(v=vs.85).aspx
我想做的是将我们公司使用的某些扫描仪的 msi 安装程序嵌入到一个帮助台界面中,该界面允许用户 select 他们想要的扫描仪并单击一个按钮来安装驱动程序。
private void MSIexec(string arguments)//Run MSIexec = MSIexec("Enter Command");
{
Process process = new Process();
process.StartInfo.FileName = @"C:\Windows\System32\msiexec.exe";
process.StartInfo.Arguments = arguments;
process.Start();
这是我使用命令 MSIexec(Argument Here)创建的进程 运行 该进程加上相应的参数以通过菜单项 select 安装 msi。我已将 msi 安装程序作为资源添加到我的 Visual Studios 2012 WPF 项目并将其设置为嵌入式。我已经测试了这个过程,它会工作,如果我输入安装程序的完整路径名,安装程序将使用命令和参数。我正在尝试将安装程序包含在最终编译的 EXE 中,这样用户就不必拥有或下载安装驱动程序所需的文件,他们只需 运行 我的 exe 并单击安装即可安装驱动程序,而无需他们在某个文件夹中有文件只是 运行 exe and go.
主要问题是我可以通过参数调用嵌入的 msi 还是需要将它加载到其他地方才能通过参数调用。此外,当事情 运行 通过测试或一旦 exe 准备就绪时,程序会将这些文件存储在 (C:\Temp) 中的什么文件????如果这是正确的文件夹,也许我可以在参数中引用它,这样我知道安装程序上的路径不会改变。
感谢您提供的任何帮助。
tmitcham
您需要将 MSI 文件从可执行文件的资源中提取到某个安全位置,然后从那里启动 MSI 安装。会是这样的:
https://www.codeproject.com/Articles/4221/Adding-and-extracting-binary-resources
How can I self-extract a binary resource (executable) using C++?
它必须存放在安全的地方,因为在维修或其他此类维护操作时可能需要它,因此不应丢弃它。
我不会打扰 msiexec.exe 电话。有一个非常好的 API MsiInstallProduct() 很容易 P/Invoke 到。
https://msdn.microsoft.com/en-us/library/windows/desktop/aa370315(v=vs.85).aspx