@joebigelow / wix / commits / 84d70d16

Default to 1 if NUMBER_OF_PROCESSORS environment variable is invalid

Also, use Environment.ProcessorCount to access NUMBER_OF_PROCESSORS Fixes wixtoolset/issues#5628

Rob Mensching committed Mar 19, 2021 at 10:30 UTC 84d70d16e4ab2051d881251440fe4729f301b265
1 file changed +6 -22
src/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs
+6 -22
@@ -97,6 +97,8 @@ namespace WixToolset.Core.WindowsInstaller.Bind
97 if (this.CabbingThreadCount <= 0)
98 {
99 this.CabbingThreadCount = this.CalculateCabbingThreadCount();
100 +
101 + this.Messaging.Write(VerboseMessages.SetCabbingThreadCount(this.CabbingThreadCount.ToString()));
102 }
103
104 // Send Binder object to Facilitate NewCabNamesCallBack Callback
@@ -137,31 +139,13 @@ namespace WixToolset.Core.WindowsInstaller.Bind
139
140 private int CalculateCabbingThreadCount()
141 {
140 - var cabbingThreadCount = 1; // default to 1 if the environment variable is not set.
142 + var cabbingThreadCount = Environment.ProcessorCount;
143
142 - var numberOfProcessors = Environment.GetEnvironmentVariable("NUMBER_OF_PROCESSORS");
143 -
144 - try
144 + if (cabbingThreadCount <= 0)
145 {
146 - if (!String.IsNullOrEmpty(numberOfProcessors))
147 - {
148 - cabbingThreadCount = Convert.ToInt32(numberOfProcessors, CultureInfo.InvariantCulture.NumberFormat);
149 -
150 - if (cabbingThreadCount <= 0)
151 - {
152 - throw new WixException(ErrorMessages.IllegalEnvironmentVariable("NUMBER_OF_PROCESSORS", numberOfProcessors));
153 - }
154 - }
146 + cabbingThreadCount = 1; // reset to 1 when the environment variable is invalid.
147
156 - this.Messaging.Write(VerboseMessages.SetCabbingThreadCount(this.CabbingThreadCount.ToString()));
157 - }
158 - catch (ArgumentException)
159 - {
160 - throw new WixException(ErrorMessages.IllegalEnvironmentVariable("NUMBER_OF_PROCESSORS", numberOfProcessors));
161 - }
162 - catch (FormatException)
163 - {
164 - throw new WixException(ErrorMessages.IllegalEnvironmentVariable("NUMBER_OF_PROCESSORS", numberOfProcessors));
148 + this.Messaging.Write(WarningMessages.InvalidEnvironmentVariable("NUMBER_OF_PROCESSORS", Environment.ProcessorCount.ToString(), cabbingThreadCount.ToString()));
149 }
150
151 return cabbingThreadCount;