我正在尝试构建一个程序,为医院安装我们的msi软件包。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WindowsInstaller;
using System.Diagnostics;
namespace TestApp
{
public class InstallerTest
{
public static void Main()
{
//Type type = Type.GetTypeFromProgID("WindowsInstaller.Installer");
//Installer installer = (Installer)Activator.CreateInstance(type);
//installer.InstallProduct("C:\\Paragon_12.1.msi /qn ADDLOCAL=DR,PI,MR,OM,PM,PV,RA,RM,RG,SR,ST,TR,AP,AS,GL,JS,PP,QM,UR,CC,ED,FA,LB,MM,MA,OR,PS,PR,RX,CR,RD,RS KEY_CC=blank KEY_ED=blank KEY_FA=blank KEY_LB=blank KEY_MA=blank KEY_MM=blank KEY_OR=blank KEY_PR=blank KEY_PS=blank KEY_RD=blank KEY_RS=blank KEY_RX=blank, @"C:\Paragon_12.1.msi");
Process process = new Process();
process.StartInfo.FileName = "msiexec.exe";
process.StartInfo.Arguments = string.Format("/qn ADDLOCAL=DR,PI,MR,OM,PM,PV,RA,RM,RG,SR,ST,TR,AP,AS,GL,JS,PP,QM,UR,CC,ED,FA,LB,MM,MA,OR,PS,PR,RX,CR,RD,RS KEY_CC=blank KEY_ED=blank KEY_FA=blank KEY_LB=blank KEY_MA=blank KEY_MM=blank KEY_OR=blank KEY_PR=blank KEY_PS=blank KEY_RD=blank KEY_RS=blank KEY_RX=blank, @"C:\Paragon_12.1.msi");
process.StartInfo.Verb = "Open";
process.Start();
process.WaitForExit();
}
}
}
我已经想到了这个,但是当我运行它时,它只显示我可以使用的开关,我想默默地安装这个程序并添加序列号。它适用于bat文件。
答案 0 :(得分:0)
更改
process.StartInfo.Arguments = string.Format("/qn ADDLOCAL=DR,PI,MR,OM,PM,PV,RA,RM,RG,SR,ST,TR,AP,AS,GL,JS,PP,QM,UR,CC,ED,FA,LB,MM,MA,OR,PS,PR,RX,CR,RD,RS KEY_CC=blank KEY_ED=blank KEY_FA=blank KEY_LB=blank KEY_MA=blank KEY_MM=blank KEY_OR=blank KEY_PR=blank KEY_PS=blank KEY_RD=blank KEY_RS=blank KEY_RX=blank, @"C:\Paragon_12.1.msi");
到
process.StartInfo.Arguments = string.Format("/i \"{0}\" /qn ADDLOCAL=DR,PI,MR,OM,PM,PV,RA,RM,RG,SR,ST,TR,AP,AS,GL,JS,PP,QM,UR,CC,ED,FA,LB,MM,MA,OR,PS,PR,RX,CR,RD,RS KEY_CC=blank KEY_ED=blank KEY_FA=blank KEY_LB=blank KEY_MA=blank KEY_MM=blank KEY_OR=blank KEY_PR=blank KEY_PS=blank KEY_RD=blank KEY_RS=blank KEY_RX=blank", @"C:\Paragon_12.1.msi");
这会将第二个参数放在你的字符串中,我会引用它,以防你最终得到一个有空格的路径。我还在它前面添加了/i
开关。
{0}
表示将第一个参数放在该位置。例如:
string result = String.Format("Hello {0}, how are you? My name is {1}.", "Jim", "Bob");
//result will be "Hello Jim, how are you? My name is Bob."