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;