使用Microsoft.Deployment.WindowsInstaller.PatchInstallation确定是否安装了修补程序

时间:2012-11-28 12:33:32

标签: c# wix windows-installer wix3.5 dtf

我认为这是相当简单的但是我在使用PatchInstallation类时遇到了问题,该类是Microsoft.Deployment.WindowsInstaller的一部分。

获得了正确的补丁代码和产品代码(targetcode)后,我只是调用了IsInstalled属性,但是抛出了ArgumentNullExceptions。

PatchInstallation patchInstallation = new PatchInstallation(patchCode.ToString("B"), productCode.ToString("B"));
return patchInstallation.IsInstalled;

例外文字是:

  

System.ArgumentNullException发生Message = Value不能为null。   参数名称:String Source = mscorlib ParamName = String
  堆栈跟踪:          at System.Number.StringToNumber(String str,NumberStyles options,NumberBuffer& number,NumberFormatInfo info,Boolean   parseDecimal)          在System.Number.ParseInt32(String s,NumberStyles样式,NumberFormatInfo信息)          在Microsoft.Deployment.WindowsInstaller.PatchInstallation.get_State()          在Microsoft.Deployment.WindowsInstaller.PatchInstallation.get_IsInstalled()   的InnerException:

如果有人有任何想法我做错了请告诉我! 干杯!

1 个答案:

答案 0 :(得分:1)

您必须先选择上下文才能获得补丁的状态。使用带有UserContexts的四参数构造函数,并选择UserManaged,UserUnmanaged或Machine之一。