Changelog

Overview of issues


Build Ver Date Critical Bug Simple Bug Cosmetic Bug Improvement New Feature
431 4.3 2019-07-09
Prevent Windows upgrade rollback
Custom TEST sections working again
Fix missing errors from final dialog box
   
430 4.3 2019-06-20
Fix privilege escalation vulnerability
Fix cancel error 170
Fix sub PKG not found
EstimatedRuntime in minutes
   
429 4.2 2018-12-05
Stop execution after Finally
Fix TolerateReboot
Fix PKG cancel loop
No wait for disabled services
Negative number comparison
Retry execution on start error
Switch case insensitive
Preserve array case
Service start manual by default
Clean of similar paths
Support chained strings
Vars in command description
NoExpand
OsAtLeast
RemoteLog
Smart quote support
425 4.2 2018-07-23  
PKG support in Finally section
Prevent crash from bad CCM client
Fix clean case
Fix clean pkg inline
 
Wait reboot fix
 
424 4.2 2018-05-31  
Fix logoff crash
Prevent MIF mixup
Incomplete Clean fix
Foreach skip special
Clean file retry
RegExist tests value
Update pause longer
Wait support
423 4.2 2018-02-26  
Queue Error 1018
Increased TS wait time-out
DeleteLocalCopy with remote source
Clean skip exact
Unify sub logs
Requeue after kill
Override more params
Timeout
Command Retry
Selective clear of execution history
TagActiveSetup
417 4.1 2017-06-19    
Fix crash on malformed switch
Empty variables preserved
Command string syntax check before queueing
 
416 4.1 2017-06-06  
Fix truncated condition list
Prevent restart before reboot
FileExist for dirs
Package log name
Clean command
Switch statement
415 4.1 2016-11-28  
Fix truncated section list
   
FileContent
414 4.1 2016-11-21        
New Command RunTask
413 4.1 2016-11-07  
NotAgain for old packages
     
411 4.1 2016-10-17  
Hanging Kickstart
     
410 4.1 2016-10-10  
Fix leak in CopyLocal
 
Missing reg link after Windows upgrade
Parameter Break
FileDate
409 4.1 2016-06-22    
Correct counting of rejects
 
Execution status
Foreach
384 3.8 2016-04-22  
Prevent service stop after logoff
     
381 3.7 2016-02-17  
Prevent abort by requeue
Fix endless sub loop
Prevent DCOM errors in event log
OSVER 0A00
Prevent reinstallation after uninstall
Improved update pause
Autostart queue after task sequence
380 3.7 2015-06-24  
Prevent retry loop when queueing with old version
   
Ctrl-Break to stop queue
379 3.7 2015-06-11  
Prevent MIF name overflow
Correct execution on Retry
Fix Retry for sub PKG
Fix WmiValue query with backslashes
Prevent duplicate tray icon
Non-zero return on error in TS
 
Support for date-time in expressions
Plus operator
Negative string indices
378 3.7 2014-07-29  
Sub PKG searching in original source
     
377 3.7 2014-07-17
Prevent forced logoff after 5 hours
Missing reg link on 64bit
Relative sub PKG downloading
   
375 3.7 2014-07-06  
MaxReject Fix
Sub PKG downloading
Prevent status ABORT after reboot
 
Wait for Application Deployment Types
Var expansion
OSARCH
New parameters Retry/NoRetry
374 3.7 2014-03-13
Prevent boot manager corruption
   
Ordering of packages with OSDQueue
OSVER 0603
New Parameter Last=1
New behavior MaxReject=-1
373 3.7 2014-03-05
Prevent unexpected reboot in Dialog mode
Prevent crash by uncontrolled output
Repair broken registry links
   
372 3.7 2013-09-04    
Dialog button order
Wait for inventory
Late MSI parameter insertion
Waiting for Windows updates visible
New Parameter ManualClose=
371 3.7 2012-08-30  
Prevent crash in WmiExist
     
370 3.7 2012-08-02  
Prevent crash on inventory error
Prevent dialog from reappearing
Prevent closing of final dialog
Prevent crash on logon with Direct=1
Prevent app restart after Close=
 
369 3.6 2012-06-18  
Prevent hang after close
     
368 3.6 2012-06-13  
Prevent hang in task sequence
     
367 3.6 2012-06-12  
Process Close= of subsequent package
Inventory trigger under 64bit
 
Packages started before logon default to Logoff=1
 
366 3.6 2012-05-10        
New Parameter Close=
New OS vars
New function WmiValue
365 3.6 2011-12-09  
Logon screen after Dialog=1
Registry Link under 64bit Vista
Enforce 64bit service
CD is correctly logged
DPI scaled dialogs
Prevent interactive service event
   
364 3.6 2011-08-17  
Correct session with Logoff=0
     
363 3.6 2011-08-11  
Fix for rare crash
Prevent status ABORT on reboot
Forced logoff with Kickstart
   
361 3.6 2011-07-21  
Fix CopyLocal for PKG: from removable media
Honor Test:PreQueue when another package active
 
Disable closing of console window
Honor MaxReject on requeue
New parameter Dialog=1
353 3.5 2011-04-29    
Eliminated status Waiting:Copy
Efficient ini parsing
Workaround for COPY_ERROR#50 under Vista
 
351 3.5 2010-12-05  
Prevent loop after failed sub PKG
Sub-PKG with absolute path
Empty command crash
Non-branding TEST:Required
32bit variables
Queue management commands
64bit Linked Registry
WQL support
340 3.4 2010-06-15  
Unique MIF file name per command
Prevent Status ABORTED:KILL
 
Support for AutoAcceptMin=0
New parameter ShowFinalDialog
339 3.3 2010-05-27  
Fix MIF parsing
Correct display of log in progress dialog
Prevent black screen on shutdown
New parameter LogFile
338 3.3 2010-05-21
Fix hang after return from nested sub
Change to prevent status ABORT
Ensure processing of Finally after failed PKG
Correct reporting of daylight saving time
MHT files in root of package dir
 
Command labels
337 3.3 2010-02-16  
Fix hang after accept and kickstart
     
336 3.3 2010-02-15
Fix hang after accept and logoff
Final dialog box missing
Inventory trigger at end of execution
   
335 3.3 2010-02-10      
Prevent delay after OSD task sequence
 
334 3.3 2010-02-04  
Correct status after task sequence reboot
 
Auto-accept timeout
 
333 3.3 2010-01-22  
Prevent status ABORT in task sequence
 
Handling of new windows patch return codes
WUSA bug workaround
New :FINALLY section
332 3.3 2010-01-18  
Fix SET command
Correctly display reject count
Differentiate between Power off and Kill
Display fallback to default language
Customizable inventory trigger
Define successful return codes
Support for command loops
331 3.3 2009-11-20
Fix to prevent status ABORT
 
Fix delayed execution after logoff
   
330 3.3 2009-10-07
Fix to prevent SMS client from staying disabled
Correct package ordering with parameter Express
Fix compatibility issue on Windows 2000
Popup is less annoying
Auto start when nobody is logged on
Consider inactive user sessions
Do not count rejects too often
Restart user applications after logon
Display total estimated duration
Optionally change directory before execution
Customizable logo bitmap on package dialog
Control how many log files are preserved
Support windows presentation mode
329 3.2 2009-03-29    
Fix non graceful termination of child process
   
328 3.2 2009-03-27
Fix to prevent status ABORT
     
Flash a light during execution
Provide hotkey for debug console during execution
327 3.2 2009-03-19  
Fix to prevent status ABORT
     
326 3.2 2009-02-23  
Fix to prevent user logon after a reboot
 
Use modern window style
Disable screen saver and standby during execution
 
325 3.2 2009-02-20  
Fix crash in task sequence
 
Implement mini-dump writing on crash
 
324 3.2 2009-01-26  
Fix MIF reporting
Pause SMS during execution
     
323 3.2 2009-01-21  
Call sub-packages with absolute path
Support for larger number of commands
 
Pause SMS during execution
Report duration of execution
322 3.2 2008-12-15  
Fix to prevent skipping commands after jump
Fix behavior for OSDQueue
Prevent queuing of other package to disturb execution
Properly reject queueing of package with build number '0'
Support remote user sessions
 
321 3.1 2008-11-19  
Auto reboot at end of package
   
Delay package execution until task sequence has finished
319 3.1 2008-10-06  
Fix for hanging service
     
318 3.1 2008-06-17  
Fix to prevent status ABORT
 
Suppress dialog in task sequence
Synchronize execution with task sequence
 
317 3.0 2008-05-23      
Suppress inventory in task sequence
 
316 3.0 2008-03-11      
Clear read-only flag from CD-ROM
Fix SCCM inventory trigger
Support reboot from task sequence
Auto reboot at end of package
315 3.0 2008-02-20    
Fix missing wallpaper after reboot
 
Reporting of SMS advertisement
314 3.0 2008-01-09  
Fix progress dialog under XP
Fixed parsing of spaces in tests
Fixed logging of test results
Enhanced performance for WMI tests
Optional skip of network wait after reboot
313 3.0 2007-10-09  
Fixed overflow bug in registry function
     
312 3.0 2007-08-02  
Fixed overflow bug in numeric registry function
   
Support hex numbers in tests
311 3.0 2007-07-20  
Fix to prevent status ABORT
 
Minimized console window on execution
 
310 3.0 2007-06-10    
Fix wallpaper after execution
Error message for admin rights
Fix backward compatibility when packages queued with old version
Support for SCCM 2007
 
309 3.0 2007-05-16      
Preserve extension of older log files
List used parameters in log file
 

Detailed list of issues and changes


Build 431 Version 4.3 - 2019-07-09


  Critical Bug
Symptom
An inplace upgrade of Windows fails because a reboot interferes with the OOBE phase.
Explanation
The service was started while OOBE was still running. Subsequent reboots would break the setup and cause a rollback.
Change
Introduced waiting for the final setup phase IMAGE_STATE_COMPLETE.

Custom TEST sections working again  Simple Bug

Symptom
A custom TEST: section referenced by a command is not evaluated.
Change
Fixed restoring command test sections from the queue.

Fix missing errors from final dialog box  Cosmetic Bug

Symptom
The final dialog does not show failed packages when the package has a finally section.
Change
Fixed dialog logic to remember failed packages.

Build 430 Version 4.3 - 2019-06-20


  Critical Bug
Symptom
A privilege escalation is possible by manipulating the package info dialog on the logon screen.
Explanation
When the package contains an info .mht file, a web control is used to display this file in the dialog. When nobody is logged on, the dialog runs in the local SYSTEM context. A user can gain access by using the context menu of the web control.
Change
Context menu of web control is disabled on the logon screen.

Fix cancel error 170  Simple Bug

Symptom
Some packages are randomly not executed and receive status CANCELED:DELETED.
Explanation
A race condition when handling the mutex object leads to error 170 (ERROR_BUSY).
Change
Fixed mutex handling while checking for active executions.

Fix sub PKG not found  Simple Bug

Symptom
Calling a sub package with non-standard Program name results in CANCELED:PKG_NOT_FOUND
Change
Fixed searching for sub package path with correct program.

EstimatedRuntime in minutes  Cosmetic Bug

Symptom
Progress bar ends to soon because EstimatedRuntime defaults to seconds.
Explanation
The original SMS PDF specification defines this field to be in number of minutes. PackageShell supported specifying the unit (hours/min/sec) but changed the default to seconds.
Change
EstimatedRuntime defaults to minutes again.

Build 429 Version 4.2 - 2018-12-05


  Critical Bug
Symptom
Processing of a package continues on the next command after an error when a Finally section is defined.
Change
Fixed handling of Finally sub section to never return to the caller.

Fix TolerateReboot  Simple Bug

Symptom
A package using TolerateReboot may be ABORTED on a command following the reboot.
Explanation
While the reboot is correctly tolerated on the given command, the following command may be started before the reboot has finished.
Change
Fixed waiting for reboot to complete.

Fix PKG cancel loop  Simple Bug

Symptom
Package execution may hang in a loop when a command tries to run a sub package using PKG: and the sub package cannot be queued because of a TEST: condition.
Change
Fixed

No wait for disabled services  Simple Bug

Symptom
Execution may hang after a reboot if the Workstation service has been disabled.
Change
Fixed wait to ignore disabled services.

Negative number comparison  Simple Bug

Symptom
Comparing negative numbers gives incorrect result.
Change
Fixed numeric parsing in tests.

Retry execution on start error  Cosmetic Bug

Symptom
Execution does not start and a lot of error event are logged.
Explanation
A temporary failure to start the execution from the service may fail. This may be due to a hanging logon session.
Change
Introduced a one-time reboot and retry step when trying to start the queue. If the retry fails, all pending packages in the queue are CANCELED.

Switch case insensitive  Cosmetic Bug

Symptom
Switch statement does not match when values have different case.
Change
Changed switch statement to case insensitive.

Preserve array case  Cosmetic Bug

Symptom
Strings are converted to lowercase when processing an array with the Foreach parameter.
Change
Preserve case when parsing array values.

Service start manual by default  Improvement

Symptom
The PackageShell service is stopped although it is set to automatically start.
Explanation
The service is stopped when no packages are in the queue. Some monitoring applications consider it an error condition when Autostart services are stopped.
Change
The service is now set to 'Autostart' only when there is a package in the queue. It will revert to start type 'manual' after the queue is processed.

Clean of similar paths  Improvement

Symptom
A directory may not be deleted by CLEAN when it's name is similar to the current package name.
Explanation
The directory would be skipped for safety when the name contained the name of the current package plus a suffix.
Change
Fixed safety string match to only match the exact path name.

Support chained strings  Improvement

Symptom
Variables defined under [Strings] may not be correctly expanded if they reference other variables.
Change
Fixed parsing chained dependencies on resolve.

Vars in command description  Improvement

Symptom
The progress dialog shows variable names in the description the currently running command.
Change
Description variables are now expanded before displayed in the progress dialog.

NoExpand  New Feature

Symptom
There is no way to use an non-expanded variable name in a command.
Explanation
Variables in a command always get substituted by their value.
Change
New optional command parameter NoExpand can prevent the expansion of variables in a command line.

OsAtLeast  New Feature

Symptom
There is no easy way to check the operating system is at least windows 10 1809.
Explanation
The values of the built-in variable OSBUILD are hard to remember.
Change
New function OsAtLeast can now conveniently compare the build using the well-known windows names: OsAtLeast( "vista" ) or OsAtLeast( "1709" )

RemoteLog  New Feature

Symptom
There is no easy way to poll a number of clients for installation progress.
Change
New optional feature RemoteLog writes a mirror of the central log to a remote location.

Smart quote support  New Feature

Symptom
Scripted commands or tests fail to run when being pasted from Microsoft Office.
Explanation
Office programs frequently use typographic or smart quotes that are not valid for use in code.
Change
New behavior will automatically convert smart quotes in package definitions into their standard form (',",-).

Build 425 Version 4.2 - 2018-07-23


  Simple Bug
Symptom
A sub-package was not executed when it was called from within a finally section.
Change
Will now support sub-packages being called from inside Finally section.

Prevent crash from bad CCM client  Simple Bug

Symptom
Service may crash because of ConfigMgr client state.
Change
Fixed exception handling to tolerate a bad CCM client state.

Fix clean case  Simple Bug

Symptom
CLEAN PKG: skips the uninstallation of an installed package
Explanation
Package is only found if the search spec is written in lowercase.
Change
Fixed case-insensitive comparison.

Fix clean pkg inline  Simple Bug

Symptom
CLEAN PKG: postpones the uninstallation of the found package until after the current package.
Explanation
Package is only found if the search spec is written in lowercase.
Change
Fixed queueing on clean.

Wait reboot fix  Improvement

Symptom
A package using WAIT may be ABORTED on a command following a reboot.
Change
Fixed waiting for shutdown to complete.

Build 424 Version 4.2 - 2018-05-31


  Simple Bug
Symptom
Execution may be aborted with status ABORTED:INTERNAL_ERROR.
Explanation
When the logoff process takes longer than expected, execution could be started too early. This would result in a crash when windows tries to terminate the execution process.
Change
Fixed wait timeout after logoff.

Prevent MIF mixup  Simple Bug

Symptom
A package command may get a status of FAILED without actually having an error.
Explanation
If a simultaneously running other package creates a failure MIF status file, this can be interpreted to belong to the wrong package.
Change
Changed MIF status names to be unique for each running process.

Incomplete Clean fix  Simple Bug

Symptom
The processing of a list of paths to clean is not completed when a path cannot be found.
Change
Fixed control loop while deleting objects.

Foreach skip special  Cosmetic Bug

Symptom
Parent directory could be processed when specifying directory path.
Change
Skipped special dir entries . and ..

Clean file retry  Improvement

Symptom
A file path cannot be deleted. CLEAN returns error 145: Directory not empty.
Explanation
Some antivirus software may temporarily access files while they are deleted.
Change
Introduced an internal retry for clean operations after a short wait.

RegExist tests value  Improvement

Symptom
RegExist cannot be used to test for the existence of a reg value.
Change
Changed behavior to test for value when the key does not exist.

Update pause longer  Improvement

Symptom
Windows updates are started by ConfigMgr while queue is still being processed.
Explanation
Software update was paused only for up to one hour.
Change
Changed MaxPauseDuration to 10 hours.

Wait support  New Feature

Symptom
Waiting for a condition to occur requires custom scripting.
Change
New internal command WAIT can be used to wait for a specific duration or until a condition is met. Combine with .Until and .While as needed.

Build 423 Version 4.2 - 2018-02-26


  Simple Bug
Symptom
A package is sometimes cancelled with status QUEUE_ERROR#1018.
Explanation
When the service is processing a queue and a new package is being queued by another process, the concurrent writing to the queue can lead to inconsistent states.
Change
Introduced a mutex to coordinate concurrent access between processes.

Increased TS wait time-out  Cosmetic Bug

Symptom
A task sequence may be aborted because of an unexpected reboot. This may happen when the start-up of the Configuration Manager agent is delayed.
Explanation
PackageShell has a wait time-out of 5 minutes waiting for the task sequence to commence after reboot. This duration may be exceeded in cases where the ConfigMgr site is having connectivity problems.
Change
Increased time-out duration from 5 to 15 minutes waiting for the task sequence after reboot. Also, if the time-out is reached, execution does not continue, but the service is stopped instead.

DeleteLocalCopy with remote source  Cosmetic Bug

Symptom
A package's local source may not be deleted although DeleteLocalCopy=1 is used.
Explanation
When the package is queued from a remote location, the SourceType property may be 4 (DRIVE_REMOTE) although CopyLocal=1 was used.
Change
Changed test to verify the current SourcePath type is 3 (DRIVE_LOCAL) before deleting.

Clean skip exact  Cosmetic Bug

Symptom
Clean is not performed for some paths that resemble the current package name.
Explanation
Matching to exclude the current package also included packages that started with the same substring.
Change
Fixed matching to exact.

Unify sub logs  Improvement

Symptom
Several log files need to be examined when a package uses sub packages.
Change
New behavior unifies all log files of sub packages into the log file of the parent package. The new behavior can be disabled by using parameter LogSub=1.

Requeue after kill  Improvement

Symptom
A package cannot be requeued after it was killed.
Change
Allowed requeuing of an active package when the service is terminated.

Override more params  Improvement

Symptom
Some package parameters cannot be overridden from the command line.
Change
Implemented override for missing parameters.

Timeout  New Feature

Symptom
A command may hang indefinitely and block the package from finishing.
Explanation
Parameter NoWait=1 does not wait at all. Sometimes you need to wait up to some time.
Change
New command parameter Timeout stops waiting for the command after a given number of seconds. The return code of the command is set to 1460 (ERROR_TIMEOUT).

Command Retry  New Feature

Symptom
A package retry does not work because you cannot rerun all commands in a package.
Change
New parameter Command.Retry=1 performs a reboot and restarts the package from the failed command.

Selective clear of execution history  New Feature

Symptom
A package cannot be rerun after it is uninstalled.
Explanation
The SCCM execution history of the installation is not cleared.
Change
New parameter ResetHistory will make all packages clear the execution history of alternate program IDs. Thus, an 'install' program clears the 'uninstall' program and vice versa.

TagActiveSetup  New Feature

Symptom
You cannot tell if 'Active Setup' keys are added by a specific package.
Change
New feature TagActiveSetup can be used to mark new keys.

Build 417 Version 4.1 - 2017-06-19


  Cosmetic Bug
Symptom
Crash when using a malformed switch-statement.
Change
If the last element in a switch statement does not have a key, this element is used as default.

Empty variables preserved  Improvement

Symptom
A variable that is initialized to an empty value is not defined.
Explanation
This is confusing because if a variable is undefined it does not get expanded at all. This is unexpected since it was explicitly defined.
Change
Initializing variables to an empty value now does define the variable.

Command string syntax check before queueing  Improvement

Symptom
A package execution is aborted because of syntax errors that were not detected by the package author.
Explanation
Error in command strings are only detected during execution. This is too late.
Change
Changed behavior to disallow queueing of packages containing syntax errors.

Build 416 Version 4.1 - 2017-06-06


  Simple Bug
Symptom
A package is started although it should not start with multiple TEST:REQUIRED statements.
Explanation
Packages containing a test section with multiple lines of conditions may skip some tests.
Change
Fixed bug processing multiple conditions.

Prevent restart before reboot  Cosmetic Bug

Symptom
The next package after a reboot request is sometimes terminated with status ABORTED:SHUTDOWN.
Explanation
An external control process like a task sequence may restart the service before the shutdown is completed. It therefore starts the next package, which is subsequently interrupted by the reboot.
Change
Once a shutdown is initiated, the service will not start until a reboot has been performed.

FileExist for dirs  Improvement

Symptom
FileExist() fails to verify existence of an directory.
Explanation
FindFile API does not work on directories. Using wildcards does not work if directory is empty.
Change
Added fallback to GetFileAttributes to detect directories.

Package log name  Improvement

Symptom
You cannot tell if a package log file is of a installation or an uninstall action.
Change
Log file name now includes the program (section) if it is not the default "install".

Clean command  New Feature

Symptom
It takes too much code to remove old packages, products, files and registry keys.
Change
Introduced new internal command Clean that enables the deletion of multiple objects from a single line:
CLEAN pkg:*name*, msi:*name*, hklm\software\*name*, %temp%\*.log

Switch statement  New Feature

Symptom
Using a different value depending on a condition requires complex coding.
Change
Introduced new Switch statement:
%{ SWITCH WmiValue( "win32_computersystem.domain" ): 'MSFT': 'GOOD' else: 'EVIL' }%

Build 415 Version 4.1 - 2016-11-28


  Simple Bug
Symptom
A package with a lot of sub-sections may fail with error ABORTED: SUB_NOT_FOUND
Explanation
The buffer used for holding all sub-section names was too small. The list of sections was truncated while queueing the package without giving an error.
Change
Fixed buffer bounds check. Also, a possible buffer overflow is now correctly reported while queueing.

FileContent  New Feature

Symptom
Accessing a file's content requires scripting.
Change
New function FileContent returns full or partial content of a file:
FileContent( "%LOGFILE%" ) entire file
FileContent( "%LOGFILE%", 2 ) first 2 lines
FileContent( "%LOGFILE%", -2 ) last 2 lines

Build 414 Version 4.1 - 2016-11-21


  New Feature
Symptom
Executing Windows Scheduled Tasks as part of a package is cumbersome.
Change
Introduced new command RunTask to support starting and waiting for Windows scheduled tasks.

Build 413 Version 4.1 - 2016-11-07


  Simple Bug
Symptom
A package installed by older PKGShell is re-executed although NotAgain=1 is set.
Change
Corrected fallback use of Package instead of Execution key.

Build 411 Version 4.1 - 2016-10-17


  Simple Bug
Symptom
Execution of a package may not start in rare cases.
Explanation
When an execution is abnormally terminated, the Kickstart=1 state may stay active, although they are no further packages.
Change
Corrected handling of Kickstart mode when starting execution.

Build 410 Version 4.1 - 2016-10-10


  Simple Bug
Symptom
PKGShell crashes when queuing a large package with CopyLocal.
Change
Fixed memory leak in CopyLocal.

Missing reg link after Windows upgrade  Improvement

Symptom
After performing an in place upgrade to Windows 10, older packages are missing from the registry.
Explanation
The registry link for 32bit registry access is lost after the upgrade.
Change
Registry link is now verified on each start of the service. Repairs are performed automatically.

Parameter Break  New Feature

Symptom
Stopping processing of queued packages requires access to the GUI.
Change
New command line parameter -break will stop execution of further packages after the current package is completed.

FileDate  New Feature

Symptom
Retrieving a file's date requires scripting or complex WMI queries.
Change
New function FileDate reads file modification date in WBEM format. E.g.
DateDiff( h, FileDate( d:\path\file ), now ) < 24

Build 409 Version 4.1 - 2016-06-22


  Cosmetic Bug
Symptom
Rejection of the package is disabled too fast. A user reject is counted more than once before 8 hours have past.
Explanation
When a package with Logoff=0 is run while another package is rejected, the timeout counter for rejects is reset. When the user answers the dialog, the counter is increased sooner than 8 hours.
Change
Prevent resetting of timestamp by Logoff=0 packages.

Execution status  New Feature

Symptom
A failed deinstallation of a package overwrites the status of the installed package.
Explanation
The current package status is a mixture of a package status (installed or not) and of an execution status (success or error). A design change enables the separation of the package execution from the package status.
Change
New behavior: All states are written under new execution key. Data is only copied to package key when status reaches OK. Old behavior is still supported with service parameter LegacyStatus=1. Transitional coexistence of both ways is possible using StatusMigration=1.

Foreach  New Feature

Symptom
Processing a list of values by a command is not supported.
Change
New command property .Foreach to support iterating over array of parameters. E.g.
Command1 = del %_%
Command1.Foreach = file1, file2, file3

Build 384 Version 3.8 - 2016-04-22


  Simple Bug
Symptom
Execution may not start after the user accepts a package and is logged off.
Explanation
Due to changes in timing behavior in windows, the PKGShell process may sometimes be terminated by the logoff without further error. As a consequence, the service terminates without further attempting to execute the package.
Change
Fixed handling of process termination during logoff.

Build 381 Version 3.7 - 2016-02-17


  Simple Bug
Symptom
A package execution stops unexpectedly when the package is requeued while it is currently active. The resulting status is CANCELED.
Explanation
When the requeue causes a CANCELED state, this state overwrites the state of the currently active package. After the active command has completed, the package will not resume the next command but terminate instead.
Change
CANCELED:TEST is not written to the registry when a package is already active.

Fix endless sub loop  Simple Bug

Symptom
The package execution may hang after returning from a sub call.
Explanation
An endless loop may happen when the last command of a sub is a call to another sub.
Change
Corrected call stack processing.

Prevent DCOM errors in event log  Cosmetic Bug

Symptom
DCOM error events 10016 may be found in the windows system event log when the computer reboots after a package execution.
Explanation
PKGShell will trigger an SCCM inventory after all packages in the queue are done. If the computer was just restarted, the SCCM Agent may not yet have started. The premature request will result in DCOM error events.
Change
Since the SCCM Agent is a delay-start service, PKGShell will try to explicitly start the service after a reboot.

OSVER 0A00  Improvement

Symptom
Variable %OSVER% is set to 0602 instead of 0A00.
Explanation
Under Windows 10, the GetVersionEx API hides the real OS version.
Change
Fixed resolution of OSVER by switching to native API.

Prevent reinstallation after uninstall  Improvement

Symptom
A package may unexpectedly be reinstalled by SCCM after it was uninstalled using PKGShell.
Explanation
PKGShell clears SCCM's ExecutionHistory after a successful deinstall of the package. If the SCCM advertisement of the package is still active, this will lead to a reinstallation occurring.
Change
Changed behavior to not reset the ExecutionHistory by default. The new Parameter 'ResetHistory=1' can be used for a package if required.

Improved update pause   Improvement

Symptom
It may take a long time for SCCM software updates to become visible after a package was run.
Explanation
Pausing of the SCCM Agent has the effect of reversing the configuration of the software update component. E.g. the WSUS server may have been reset to a default value.
Change
The software update agent is now paused using a different WMI instance (CCM_ComponentState). This pause method has less side effects.

Autostart queue after task sequence  New Feature

Symptom
Execution of queued packages does not automatically start after an OSD task sequence has finished.
Explanation
The parameter OSDQueue does delay the start of all packages until after the task sequence has finished. You still have to start the processing by performing a reboot or starting the service.
Change
Will now use the task sequence var SMSTSPostAction to start the service after the task sequence whenever package are queued using OSDQueue.

Build 380 Version 3.7 - 2015-06-24


  Simple Bug
Symptom
An infinite loop might occur when a package is queued by an old version of PackageShell and executed using the current version.
Explanation
When the packages fails and a retry is attempted, the old PackageShell version did not save a copy of the original package when it was queued.
Change
A copy of the original package is taken before execution if it was missing. If no valid package is found after execution, a retry is not performed.

Ctrl-Break to stop queue  New Feature

Symptom
The user cannot stop execution of the queue once it has started.
Change
New hotkey Ctrl-C or Ctrl-Break will stop execution of packages after the current package is completed.

Build 379 Version 3.7 - 2015-06-11


  Simple Bug
Symptom
In rare cases Windows Installer fails to install an MSI and instead hangs and displays an error message because of a bad parameter.
Explanation
The name of the automatic MIF-file parameter /M may be too long because the running process has a very high process ID. Since the PID is appended to the MIF file name, the resulting name may become larger than the allowed limit of 8 characters.
Change
Introduced hard limit of 8 characters to the generated MIF file name.

Correct execution on Retry  Simple Bug

Symptom
A failed package may not be re-executed as expected when using Parameter Retry=1.
Explanation
Variables/Strings that are modified during the first execution are not reset before retrying.
Change
A failed package to be retried is now completely deleted from the queue and re-queued using it's original state.

Fix Retry for sub PKG  Simple Bug

Symptom
The parent package is not resumed after a sub package completes a Retry.
Explanation
The parent package is resumed before the retry of the sub PKG is performed.
Change
Corrected order of package execution when performing a retry of a sub PKG.

Fix WmiValue query with backslashes  Simple Bug

Symptom
WmiValue may fail to return a correct value for some queries.
Explanation
There is an error in parsing the optional WMI namespace. When a WMI query contains backslashes these were misinterpreted as belonging to the namespace.
Change
Fixed parsing of optional namespace.

Prevent duplicate tray icon  Cosmetic Bug

Symptom
More than one tray notification icon is shown after switching sessions or locking/unlocking the desktop.
Explanation
In rare cases the restarting of the dialog process did not give the tray icon enough time to terminate.
Change
Fixed correct termination of tray process.

Non-zero return on error in TS  Cosmetic Bug

Symptom
Installation of a task-sequence is continued although a package has failed.
Explanation
When executing a package in-line from a task-sequence without the use of OSDQueue, the return code is always 0. As a result the task-sequence is not aware of an error.
Change
Changed return code to reflect the error when run from a task-sequence or from an application deployment.

Support for date-time in expressions  New Feature

Symptom
You had to resort to external scripting for date-time check and calculations.
Change
New functions DateAdd, DateDiff, Now. Comparison now automatically detects and considers dates in WBEM format. E.g.
DateDiff( 'h', now, DateAdd( 'd', 1, now ) ) = 24

Plus operator  New Feature

Symptom
Use of function Concat() is not intuitive. 'a' + 'b' is more readable than 'concat( 'a', 'b' ). Also '1' + '1' should give '2' instead of '11'.
Change
As an alternative to using the Concat() function, two strings can now be concatenated using the operator +. Adding two numbers now gives a numeric result.

Negative string indices  New Feature

Symptom
The string functions Left, Right and Substr lack the ability to give results relative to the length of the string.
Change
Left( 'abc', -2 ) now means Left( 'abc', Len( 'abc' ) - 2 ) giving 'a'
Right( 'abc', -2 ) now means Right( 'abc', Len( 'abc' ) - 2 ) giving 'c'
Substr( 'abc', 1, -1 ) now cuts of the first and the last character giving 'b'

Build 378 Version 3.7 - 2014-07-29


  Simple Bug
Symptom
A sub package called by PKG: may not be found on execution although it was correctly queued locally.
Explanation
The source path origin is used although the package was already copied locally.
Change
Limited usage of original source for sub packages only upon initial queue.

Build 377 Version 3.7 - 2014-07-17


  Critical Bug
Symptom
In rare cases the user is forcefully logged off after being logged on for 5 hours.
Explanation
The auto-accept feature that triggers the execution when nobody is logged on might not notice that a user has just logged on. The user logon prevents the execution from starting right away, but when the dialog times out after 5 hours, a logoff is performed without further notice.
Change
The auto-accept behavior is now completely cancelled after a user logs on.

Missing reg link on 64bit  Simple Bug

Symptom
The 32bit linked root registry key under Software\Wow6432Node is missing after installing the 64bit PKGShell service.
Explanation
This behavior only occurred if the 64bit service was installed but the 32bit service was not.
Change
Fixed the creation of 32bit links for the 64bit service.

Relative sub PKG downloading  Cosmetic Bug

Symptom
A sub package called by PKG: may not be found when the source is relative to the calling package.
Explanation
A relative source path of .\ is not handled correctly.
Change
Corrected parsing of relative source.

Build 375 Version 3.7 - 2014-07-06


  Simple Bug
Symptom
A package can not be rejected before MaxReject is reached.
Explanation
If several packages are queued there may be a miscalculation of the remaining reject count.
Change
Fixed error in calculation that was introduced by new parameter MaxReject=-1.

Sub PKG downloading  Simple Bug

Symptom
A sub package called by PKG: may not be correctly downloaded from the distribution point.
Explanation
SourcePathOrigin is not correctly determined when using SMB package shares under SCCM 2007.
Change
Corrected parsing of source origin.

Prevent status ABORT after reboot  Simple Bug

Symptom
The next package after a reboot is sometimes terminated with status ABORTED:SHUTDOWN.
Explanation
The initiation of the shutdown may kill the calling process before the shutdown is signaled to the service. In this case the service restarts the execution which leads to the following package being aborted by the shutdown.
Change
Make sure that the shutdown request is noticed by the service before performing the shutdown. This prevents the service from restarting the child.

Wait for Application Deployment Types  Improvement

Symptom
An application installation may be labeled non-successful in the Software-Center after it is installed using PackageShell.
Explanation
When using Dialog/Logoff=1, the detection rules of the application are evaluated after the queuing is done but before the application is installed. This is because the calling process terminates after queuing the package.
Change
The initial call of PackageShell will now wait until the service has finished installing the application. This is similar to the behavior inside a task sequence.

Var expansion  Improvement

Symptom
A variable is not expanded when used from inside an if statement, a while, until or a success test.
Change
Introduced correct expansion of variables in all use cases.

OSARCH  New Feature

Symptom
OSBITS contains 32 or 64. Sometimes the strings x86/x64 is needed instead.
Change
New variable OSARCH is set to either x86 or x64.

New parameters Retry/NoRetry  New Feature

Symptom
On rare occasions a package may just fail for temporary reasons. A pragmatic workaround to this is to re-execute the package.
Change
New parameter Retry=1 lets a package be re-executed one time, after a status of ABORTED or FAILED. Parameter can be set per package or globally per CFG.

Build 374 Version 3.7 - 2014-03-13


  Critical Bug
Symptom
Computer does not boot after installation of PackageShell service
Explanation
Build 373 introduced a feature to fix broken registry links on installation. When the registry root key contains sub keys, the fix can behave erratically on 64bit. This can lead to corruption of HKLM\BCD.
Change
Fixed support for registry root with sub keys.

Ordering of packages with OSDQueue  Improvement

Symptom
The execution of packages is not in the expected order during OSD deployments when mixing packages with Logoff=0 and Logoff=1.
Explanation
The default behavior of PackageShell is to let packages with Logoff=0 overtake packages with Logoff=1 in order to not disturb the user. This behavior is confusing during OSD.
Change
When using OSDQueue in a Task Sequence, queued packages are now forced to Logoff=1 so they are executed in the same order as queued.

OSVER 0603  Improvement

Symptom
Variable %OSVER% is set to 0602 instead of 0603.
Explanation
Under Windows 8.1, the GetOSVersion API hides the real OS version.
Change
Fixed resolution of OSVER under Windows 8.1 and Server 2012 R2.

New Parameter Last=1  New Feature

Symptom
There is no way to let a package be executed after all other packages.
Change
New parameter Last=1 increases the queue order so package is executed as last package in queue.

New behavior MaxReject=-1  New Feature

Symptom
There is no way to prevent the user from rejecting a package at least once.
Explanation
A package can be rejected at least once. The default of MaxReject=0 means unlimited rejections.
Change
Introduced new meaning to parameter MaxReject: If set to -1, the user cannot reject the package dialog.

Build 373 Version 3.7 - 2014-03-05


  Critical Bug
Symptom
An unexpected reboot is performed in Dialog mode when windows updates are pending.
Explanation
The reboot requested by the Windows Update agent is performed even though the user is logged on.
Change
Restricted the reboot to be performed only before Logoff=1 packages.

Prevent crash by uncontrolled output  Simple Bug

Symptom
Execution of a package may be aborted when certain output by a command is received.
Explanation
The command console output could cause a heap corruption because of a missing check.
Change
Corrected output console string handling.

Repair broken registry links  Cosmetic Bug

Symptom
Different package inventory is seen in the registry for 32bit and 64bit executables.
Explanation
The 32bit linked root registry key under Software\Wow6432Node is broken and goes out of sync.
Change
Introduced detection and fix of the registry link upon installation of the service.

Build 372 Version 3.7 - 2013-09-04


  Cosmetic Bug
Symptom
The cursor does not behave as expected on the package dialog when selecting dialog buttons using arrow keys.
Explanation
In the package dialog, the default button of "No" is on the right edge. When pressing the left arrow key, the focus does not go to the left button.
Change
Corrected ordering of dialog box buttons.

Wait for inventory  Cosmetic Bug

Symptom
The final inventory is sometimes not performed after a reboot.
Explanation
The SMS Agent takes time before accepting triggers when booting up.
Change
Will now wait for SMS Agent to become available.

Late MSI parameter insertion  Improvement

Symptom
Automatic MSI parameter insertion may not work for some packages.
Explanation
The standard MSI parameters are not inserted when the MSIEXEC command is stored in a variable.
Change
Changed the command line variable expansion to occur before the MSI parameter insertion.

Waiting for Windows updates visible  Improvement

Symptom
The start of a package execution may be delayed without a progress indication when the computer is perfoming Windows updates.
Explanation
The Windows Update Agent is always allowed to complete it's work before a package execution is started. This can be confusing to the end user because no progress is displayed.
Change
The logon dialog is now hidden while waiting for Windows Updates to complete.

New Parameter ManualClose=  New Feature

Symptom
Some applications may lose data when automatically closed by the Close Applications dialog.
Explanation
It may be preferable that the user terminates an application himself, instead of automatically closing the application by the package dialog.
Change
Behavior of the Close Application dialog can now be modified by setting ManualClose=1. The content of the dialog is dynamically adapted.

Build 371 Version 3.7 - 2012-08-30


  Simple Bug
Symptom
The execution is sometimes aborted when evaluating the function WmiExist.
Explanation
An incorrect use of VariantClear would lead to memory corruption in rare cases.
Change
Fixed initialization and use of VariantClear.

Build 370 Version 3.7 - 2012-08-02


  Simple Bug
Symptom
The service terminates unexpectedly in some cases when an SMS inventory cannot be performed.
Change
Fixed error handling.

Prevent dialog from reappearing  Cosmetic Bug

Symptom
The package dialog unnecessarily reopens before executing a Logoff package after a Dialog package.
Explanation
The package dialog should not re-appear after the installation is started when no user is logged on.
Change
Corrected dialog logic.

Prevent closing of final dialog  Cosmetic Bug

Symptom
The final dialog closes after 10 seconds.
Change
Fixed window control logic.

Prevent crash on logon with Direct=1  Cosmetic Bug

Symptom
A command cannot be started using Direct=1 when the program is set to execute on logon.
Change
Prevented desktop change for Direct=1.

Prevent app restart after Close=  Improvement

Symptom
The user is able to restart an application after it is terminated by the Close-parameter.
Change
The closed applications are now immediately closed if the user restarts them during the execution.

Build 369 Version 3.6 - 2012-06-18


  Simple Bug
Symptom
Execution of a package with Close= directive may hang.
Change
Fixed thread management.

Build 368 Version 3.6 - 2012-06-13


  Simple Bug
Symptom
Execution of a package inside a task sequence hangs.
Explanation
Occurs when service parameter OSDQueue is not set.
Change
Fixed query for user presence.

Build 367 Version 3.6 - 2012-06-12


  Simple Bug
Symptom
An application specified in a Close-parameter is not terminated before execution.
Explanation
The Close-statement of the next package in the queue is not processed when a previous package was running.
Change
The package dialog will now re-appear if the next package in the queue has different close requirements.

Inventory trigger under 64bit  Simple Bug

Symptom
The inventory is not triggered automatically on 64bit systems.
Change
Corrected trigger mechanism.

Packages started before logon default to Logoff=1  Improvement

Symptom
The execution progress is not visible after a user logs on.
Explanation
A user is able to log on after starting a Dialog package from the logon screen. The execution is not visible after successful logon.
Change
Packages started from the logon screen now default to Logoff=1.

Build 366 Version 3.6 - 2012-05-10


  New Feature
Symptom
Running applications interfere with execution.
Explanation
This occurs when the user is logged on, with parameters Dialog=1 and Logoff=0.
Change
New optional parameter Close= can enforce that certain executables are terminated before execution.

New OS vars  New Feature

Symptom
It's overly complicated to detect the language and architecture of the OS.
Change
New environment variables are defined during the package execution: OSBITS (32|64), OSLANG (ENU), OSLANGCODE (1033), OSVER (0601)

New function WmiValue  New Feature

Symptom
You need to process or store the content of a WMI property.
Change
The new string function WMIValue extracts Wbem instance property values.

Build 365 Version 3.6 - 2011-12-09


  Simple Bug
Symptom
A black screen is displayed instead of the logon screen after execution of several packages with both Dialog=0 and Dialog=1.
Explanation
When a user is not logged on and a 'Dialog' package is executed after a 'Logoff' package, then the hiding of the logon screen is not correctly reversed.
Change
Made sure the logon is made visible again after all queue combinations.

Registry Link under 64bit Vista  Simple Bug

Symptom
Package is not started correctly after PackageShell is first installed under 64bit Vista or Server 2008.
Explanation
The WOW64 registry link is not correctly set under Vista and Server 2008. Does not affect Windows 7 and Server 2008 R2.
Change
Corrected link API flags.

Enforce 64bit service  Simple Bug

Symptom
When running under a 64bit OS, environment variables point to the 32bit locations. This is because the 32bit service is actually running.
Explanation
The service is running on the WOW64 emulation layer when the 32bit executable is used for installation. This remains the case, even if the correct 64bit executable is installed later.
Change
The WOW64 behavior is now disabled when the 64bit executable is installed.

CD is correctly logged  Cosmetic Bug

Symptom
Although the current directory of a command is changed using parameter .cd=, the log file displays the wrong current directory.
Explanation
The command parameter .CD is working as expected, but it's usage is not correctly reflected in the package log file.
Change
Corrected log output.

DPI scaled dialogs  Cosmetic Bug

Symptom
The package dialogs are not scaled correctly when using a non-standard display setting of 120 DPI or greater.
Explanation
The font and some dialog elements where not scaled according to the DPI setting.
Change
Corrected scaling relative to current DPI setting.

Prevent interactive service event  Cosmetic Bug

Symptom
An error event ID 7030 is logged to the system event log because the PKGShell service is marked as an interactive service.
Explanation
The computer is configured to not allow interactive services. This is common for domain controllers.
Change
PKGShell service is not flagged as interactive upon installation any longer. The reason for this flag was historic.

Build 364 Version 3.6 - 2011-08-17


  Simple Bug
Symptom
A warning is displayed that Windows detected an interactive process running in session 0.
Explanation
Execution of a package with Logoff=0 is started in session 0. If the package starts a gui process, this triggers a compatibility warning.
Change
Fixed choice of active session for Logoff=0.

Build 363 Version 3.6 - 2011-08-11


  Simple Bug
Symptom
The service crashes with a protection fault on extremely rare occasions.
Explanation
Two different threads changing the package status could cause a race condition.
Change
Added thread-safety by protecting the status with a critical section.

Prevent status ABORT on reboot  Simple Bug

Symptom
When running a large sequence of packages, the next package after a reboot is sometimes terminated with status ABORTED:SHUTDOWN.
Explanation
The shutdown request causes the service to stop. If the service is restarted before the shutdown is completed, the following package is then killed by the shutdown.
Change
Fixed handling of shutdown event.

Forced logoff with Kickstart  Cosmetic Bug

Symptom
Logging off the user is delayed or hangs although Kickstart mode is used.
Explanation
When Kickstart mode was triggered without admin rights, the kickstart mode was not honored if the log off took too long.
Change
Service now correctly remembers Kickstart mode when triggered from outside.

Build 361 Version 3.6 - 2011-07-21


  Simple Bug
Symptom
Execution of a sub-packages is aborted with status ABORTED:PATH_NOT_FOUND.
Explanation
When the package is queued from an removable media like CDROM, the CopyLocal option does not correctly record the sub-package path.
Change
Fixed CopyLocal for sub-packages.

Honor Test:PreQueue when another package active  Simple Bug

Symptom
A package is queued and executed although a requirement specified as PreQueue is not met.
Explanation
The TEST:PREQUEUE is not evaluated if another package is currently active. This resulted in the same behavior as if parameter -q (Queue Only) had been used.
Change
Changed reaction if another instance is currently running.

Disable closing of console window  Improvement

Symptom
A package is reported as ABORTED:KILL after the user closes the console window.
Explanation
The user can terminate a package when he sees the active console window by clicking on the X or using the system menu.
Change
The default system menu of the console window is changed to prevent closing.

Honor MaxReject on requeue  Improvement

Symptom
A package stays on status WAITING:REJECTED although the MaxReject limit should have been reached.
Explanation
When a package is re-queued on a regular basis, the Reject count gets reset on each execution.
Change
The reject count is now remembered when a package is requeued.

New parameter Dialog=1  New Feature

Symptom
Package needs to show progress without logging off the user.
Explanation
Parameter Logoff=1 does not show any dialogs and is completely silent.
Change
New parameter Dialog=1 can be used to display all dialogs while allowing the user to remain logged on.

Build 353 Version 3.5 - 2011-04-29


  Cosmetic Bug
Symptom
A sub-package gets status WAITING:COPIED although it is not required.
Explanation
The WAITING states COPY and COPIED were historically used before BITS caching was popular. Since the copying now usually happens locally, the states are less meaningful.
Change
Eliminated intermediate WAITING states.

Efficient ini parsing  Improvement

Symptom
Unnecessary traffic is caused by reading the package definition when queuing a package over a network share.
Explanation
Windows API for reading ini files is suboptimal for network access.
Change
Package definition file is now cached locally before parsing.

Workaround for COPY_ERROR#50 under Vista  Improvement

Symptom
CANCELED:COPY_ERROR#50 when queuing a package on a computer running Vista from a network share running Server 2008 R2.
Explanation
A Windows bug described in KB973278 lets Vista computers yield ERROR_NOT_SUPPORTED if copying from a Server 2008 R2 using the BackupFile API without admin rights. A Hotfix is available from Microsoft to prevent this issue.
Change
Redesigned file copying to use the more common CopyFile API that does not have this restriction.

Build 351 Version 3.5 - 2010-12-05


  Simple Bug
Symptom
A package can run into an endless loop if it uses a deep nesting of sub-routines together with sub-packages and on of the sub-packages fail.
Explanation
The failure of a sub-package was not correctly handled by the instruction pointer in some cases.
Change
Fixed sub-package status handling.

Sub-PKG with absolute path  Cosmetic Bug

Symptom
Execution fails when calling a sub-package with absolute path.
Explanation
When calling a sub-package, the path can only be given relative to the parent package.
Change
Fixed bug in parsing path specification.

Empty command crash  Cosmetic Bug

Symptom
Crash when processing a sub-package that contains a malformed command.
Explanation
The sub-package queue routine had a bug when processing empty commands.
Change
Improved detection of malformed commands.

Non-branding TEST:Required  Improvement

Symptom
The package status is set to an error of CANCELED:TEST:REQUIRED unnecessarily.
Explanation
A package's REQUIRED condition should not be considered an error. If it fails, the package should simply not run. If an error status is preferred, you should use TEST:PREQUEUE instead.
Change
The package status of CANCELED:TEST:REQUIRED is still logged but not written to the registry status.

32bit variables  New Feature

Symptom
Packages require complex logic to access 32bit locations depending on the platform they are running.
Explanation
When authoring packages that should install 32bit software on 32bit and 64bit clients, you need consistent references to the 32bit paths of the system. Theses should work on both 64bit systems and 32bit systems.
Change
New environment variables are defined during the package execution that consistently point to the 32bit locations: 32Bit_ProgramFiles, 32Bit_System32, 32Bit_Software

Queue management commands  New Feature

Symptom
There's no easy way to see what packages are queued and to delete a package from the queue.
Explanation
You need to directly manipulate the registry to list the queue's content or to get a package out of the queue. Parameter -x deletes everything.
Change
New parameter -L lists the content of the queue. The parameter -X now accepts a name with optional wildcards to delete specific packages.

64bit Linked Registry  New Feature

Symptom
A 32bit PackageShell cannot queue a package on a 64bit system when the registry root is under HKLM\Software.
Explanation
The HKLM\Software registry key is redirected when running 32bit software on 64bit systems. That means that the 64bit PackageShell would see a different registry than the 32bit version.
Change
If PackageShell is installed or run on a 64bit system, it now creates links between the 32bit and the 64bit registry areas it uses. All queries and changes will immediately affect both 32bit and 64bit locations.

WQL support  New Feature

Symptom
The WMIExist function cannot be used to make complex queries. It only supports matching a single property with equal/like.
Explanation
Although WQL is used internally, the package author had no access to the functionality.
Change
New optional syntax of WMIExist supports direct WQL queries.

Build 340 Version 3.4 - 2010-06-15


  Simple Bug
Symptom
A package command may terminate with the wrong status if packages run simultaneously.
Explanation
If the package parameter Direct=1 is used, more than one package commands may be active at the same time. If one command generates a MIF file, this is misinterpreted by the other command as it's own status.
Change
Each command now gets a unique MIF file name to use for status reporting. The name is accessible through the variable %MIF%.

Prevent Status ABORTED:KILL  Simple Bug

Symptom
A package gets status ABORTED:KILL. This happens seldom when the log off takes too long after accepting execution.
Explanation
Because the session is killed after the start, the package process is killed.
Change
Improved time-out behavior.

Support for AutoAcceptMin=0  Improvement

Symptom
If no user is logged on, the dialog is still presented before execution.
Explanation
The AutoAcceptMin specifies the number of minutes before the dialog box times out at the logon screen. Previously, this behavior could not be suppressed because the parameter could not be set to 0.
Change
A value of 0 now disables the dialog if no user is logged on.

New parameter ShowFinalDialog  New Feature

Symptom
The final dialog is not shown when no user accepted the package.
Explanation
There are specific SWD scenarios where it is preferable to always show the final dialog.
Change
Added new service parameter ShowFinalDialog.

Build 339 Version 3.3 - 2010-05-27


  Simple Bug
Symptom
The failure reason of an MSI installation is not correctly reported.
Explanation
The failure description that is returned via a MIF file is not correctly processed.
Change
Fixed bug in parsing routine.

Correct display of log in progress dialog  Cosmetic Bug

Symptom
The log area of the progress dialog is not displaying some lines from the log.
Explanation
The lines where hidden because of a bug if they started with a certain pattern.
Change
Corrected display behavior.

Prevent black screen on shutdown  Improvement

Symptom
When a shutdown takes too long to complete, the progress dialog disappears - leaving a black screen until the machine finally reboots.
Explanation
The shutdown timeout was set for 3 minutes.
Change
Progress dialog will now wait up to an hour before it gives up waiting for the shutdown to complete.

New parameter LogFile  New Feature

Symptom
The relevant logs of some programs cannot be shown on the progress dialog.
Explanation
The progress dialog can only display the contents of the standard package log.
Change
New parameter .LogFile can be used on a command to make the progress dialog display an alternative log file during this commands execution.

Build 338 Version 3.3 - 2010-05-21


  Critical Bug
Symptom
Execution of a package hangs and the service does not terminate in some scenarios. The error can occur when packages do a nesting of sub-routines with more than 2 levels.
Explanation
If the control has to return from more than 2 levels of nested subroutines in one step, i.e. when all sub-routines calls are in the last statement of a section, execution hangs in an endless loop.
Change
Fixed processing of instruction pointer on sub-routine return.

Change to prevent status ABORT  Simple Bug

Symptom
The package is sometimes aborted when the log off takes too long after accepting execution.
Change
Adjusted time-out behavior.

Ensure processing of Finally after failed PKG  Simple Bug

Symptom
The finally section is not executed when a sub-package call fails.
Explanation
If a PKG call fails, only the finally section of the sub package was called. The finally section of the parent package was being skipped.
Change
Corrected logic in sub package processing.

Correct reporting of daylight saving time  Cosmetic Bug

Symptom
The time of a package status appears off by one hour when the machine is on daylight saving time.
Explanation
Only the regular time zone correction was used when reporting the date to the registry. This error only affects the time as reported into the SMS inventory.
Change
Fixed time bias to include both time zone and daylight saving time correction.

MHT files in root of package dir  Cosmetic Bug

Symptom
A package directory with only the MHT file is created locally after manually queuing a nested sub-package from the local package directory.
Explanation
The detection that CopyLocal is not necessary did not include the info MHT file.
Change
Fixed CopyLocal detection.

Command labels  New Feature

Symptom
The GOTO or IF statements only accept command numbers as jump destination arguments. This is error prone when you change command numbers.
Explanation
Labels can better illustrate the purpose of a jump destination and are easier to maintain.
Change
Introduced new optional parameter Command.Label= that can hold a string to be used as a jump destination.

Build 337 Version 3.3 - 2010-02-16


  Simple Bug
Symptom
The package is not started if the queue was rejected and parameter Kickstart=1 is used.
Explanation
Bug introduced in Build 336.
Change
Fixed endless loop in kickstart mode.

Build 336 Version 3.3 - 2010-02-15


  Critical Bug
Symptom
The package sometimes does not start when a user is logged off after accepting execution.
Explanation
A changed behavior in the Windows OS sometimes does not change the user session after a logoff. PKGShell would then wait indefinitely for the session change event and the package would not start.
Change
Introduced new logic to handle missing session change.

Final dialog box missing  Simple Bug

Symptom
The final result dialog box is sometimes missing after an execution.
Explanation
The dialog should appear if the user accepted execution after having rejected the package previously. This behavior was not consistent.
Change
The dialog box is now always displayed whenever a user was logged on when the execution was accepted.

Inventory trigger at end of execution  Cosmetic Bug

Symptom
The final inventory after a package execution is sometimes not performed.
Change
Fixed bug introduced in build 335.

Build 335 Version 3.3 - 2010-02-10


  Improvement
Symptom
The execution of queued packages is delayed by 10 minutes after an OSD task sequence terminates.
Explanation
The new default behavior is to always show a dialog before execution. This creates an unnecessary delay in the OSD task sequence phase.
Change
If parameter OSDQueue is used, the packages will now be queued with Kickstart=1 during the OSD phase.

Build 334 Version 3.3 - 2010-02-04


  Simple Bug
Symptom
The status of a package in a task sequence is sometimes not reported correctly.
Explanation
The service might terminate too early while the package is still active. The status of the current package is then reported when the next package is run.
Change
Fixed coordination of service after reboot in a task sequence.

Auto-accept timeout  Improvement

Symptom
Execution is sometimes started just before the user has logged on without asking for permission. This is annoying if the user does not have time to sit through an installation.
Explanation
The service cannot tell if the logon session is about to be established.
Change
The package dialog is now always displayed, even when there is no user logged on. If no user has logged on, it will timeout after a number of minutes. The number of minutes defaults to 10 and is customizable through the new service parameter AutoAcceptMin.

Build 333 Version 3.3 - 2010-01-22


  Simple Bug
Symptom
When running a large sequence of packages, the next package after a reboot is sometimes terminated with status ABORTED:SHUTDOWN.
Explanation
The shutdown request causes the service to stop. If the service is restarted before the shutdown is completed, the following package is then killed by the shutdown.
Change
The package execution process now uses an IPC object to prevent the service from starting too early.

Handling of new windows patch return codes  Improvement

Symptom
Packages updating Windows or Office components may report status FAILED because of non-zero return codes.
Explanation
Windows Update (wusa.exe) as well as Microsoft Office patches use a number of new return codes that are non-zero but still indicate success.
Change
The new well-known return codes are treated as success by default. Parameter .SuccessCodes can be used to override this behavior.

WUSA bug workaround  Improvement

Symptom
Running WUSA.EXE in a package with Logoff=1 gives ERROR_NO_TOKEN (0x800703F0).
Explanation
This is a known bug. WUSA.EXE needs to be started in Session '0'. This can be done with parameter Session0=1 - but the package author may not know about this.
Change
Introduced detection that will automatically add parameter Session0=1 if wusa.exe is used as a command.

New :FINALLY section  New Feature

Symptom
There is no way to make sure certain cleanup commands are run at the end of a package if the package terminates with an error.
Change
Introduced new section Install:Finally that can contain cleanup commands.

Build 332 Version 3.3 - 2010-01-18


  Simple Bug
Symptom
Variables defined as Strings are not changed by the Set command during execution.
Explanation
Bug introduced in Build 331.
Change
Fixed.

Correctly display reject count  Cosmetic Bug

Symptom
The remaining reject count was off by one in some situations.
Change
Corrected logic.

Differentiate between Power off and Kill  Improvement

Symptom
Status ABORTED:POWEROFF is reported after the PKGShell process is killed.
Explanation
This is incorrect, because the system was not actually switched off. It is confusing to tell apart the situations where the system was really powered off.
Change
Introduced new status ABORTED:KILL when the executable was killed but the computer did not reboot.

Display fallback to default language  Improvement

Symptom
An empty dialog with no text is displayed to the end user.
Explanation
When PackageShell was not correctly installed, the language DLLs are missing from the system32 directory. This leads to an empty dialog.
Change
Defaults to English resources in executable.

Customizable inventory trigger  New Feature

Symptom
When using a SWD system different to SMS, there is no customizable way of triggering an alternate inventory process.
Explanation
The triggering of the SMS / ConfigMgr hardware inventory is hard-coded.
Change
New service parameter InventoryRun

Define successful return codes  New Feature

Symptom
Some external commands use nonzero return codes to indicate success.
Explanation
Using the old parameter IgnoreError to handle this situation is cumbersome.
Change
New command parameter .SuccessCodes

Support for command loops  New Feature

Symptom
There is no way to repeat a command while a condition is true.
Change
New command parameters .While and .Until

Build 331 Version 3.3 - 2009-11-20


  Critical Bug
Symptom
The next command after a reboot is sometimes terminated with status ABORTED:SHUTDOWN.
Explanation
The shutdown is initiated but the shutdown event is delayed by the system. Therefore the installation is resumed before the reboot has taken place. The following command is then killed by the shutdown.
Change
The shutdown event is now signaled as soon as the reboot is initiated. This prevents the service from resuming execution prematurely.

Fix delayed execution after logoff  Cosmetic Bug

Symptom
The package sometimes does not start immediately after a user accepts execution.
Change
Fixed bug with unnecessary wait in some situations.

Build 330 Version 3.3 - 2009-10-07


  Critical Bug
Symptom
The SMS client sometimes stays disabled after the execution of a package.
Explanation
The feature to pause SMS does not reliably remove the pause from the SMS component.
Change
Corrected logic to ensure the pause is removed in all cases.

Correct package ordering with parameter Express  Simple Bug

Symptom
When queuing a large number of packages, the order is not preserved if at least one package uses the parameter Express=1.
Explanation
Express packages 'overtake' other packages by being placed in the top queue position '0'. A bug was present that broke the order for packages queued after an express package.
Change
Fixed sequential ordering with express packages.

Fix compatibility issue on Windows 2000  Simple Bug

Symptom
Service cannot start on a Windows 2000 computer because of a compatibility issue.
Explanation
Windows 2000 does not support a used service parameter.
Change
Parameter ACCEPT_SESSIONCHANGE omitted on W2K.

Popup is less annoying  Cosmetic Bug

Symptom
The tray icon info bubble "new packages" is annoying if the user has just rejected the package.
Change
Bubble is only displayed if a new package arrives after the user has rejected execution.

Auto start when nobody is logged on  Improvement

Symptom
The package is not executed although the user has politely logged off and left the machine running.
Explanation
If the user rejects a package once, the dialog reappears after 8 hours. If the user is not present to answer, the dialog stays open until the user comes in the next morning.
Change
If no user is logged on, the package dialog times out after 10 minutes and execution is auto-accepted.

Consider inactive user sessions  Improvement

Symptom
When switching to the logon dialog, execution is started although a user is still logged on.
Explanation
When performing 'fast user switching', the user's previous session becomes a disconnected terminal session. A disconnected session was not considered worth talking to.
Change
Disconnected sessions are only terminated if inactive for more than 24 hours.

Do not count rejects too often  Improvement

Symptom
The user cannot reject the package long enough because the dialog reappears too soon.
Explanation
Because the dialog is redisplayed on occasions like session changes, the user is using up his reject count too fast.
Change
The reject count is only decremented by one after 8 hours have passed - no matter how many times the user opens and rejects the dialog.

Restart user applications after logon  Improvement

Symptom
Users have to restart all their applications manually after executing a package with parameter Logoff=1.
Explanation
The Restart Manager introduced in Vista can be used to restart supported applications.
Change
The logoff now uses the new flag EWX_RESTARTAPPS to restart applications on next logon.

Display total estimated duration  Improvement

Symptom
User cannot easily see the total estimated duration of all queued packages.
Change
Total estimated duration is displayed in the window title of the package dialog.

Optionally change directory before execution  New Feature

Symptom
Executables fail if called from a different directory than the package root.
Explanation
By default, the current directory is set to %SOURCEPATH%, which is the packages root.
Change
The new parameter CommandX.CD=path can change the current working directory for a specific command.

  New Feature

Symptom
The package dialog logo bitmap is not customizable.
Change
New service parameter Logo can be used to point to a custom logo image file.

Control how many log files are preserved  New Feature

Symptom
Recurring packages create too many log files.
Change
New parameters: KeepLogDays deletes previous package log files older than specified days. KeepLogFiles keeps only the specified number of package log files by deleting the oldest files. NoCentralLog omits writing entries to the central log file for this package.

Support windows presentation mode  New Feature

Symptom
When a user is doing a presentation, he does not want to be interrupted by any package dialogs.
Change
Support for 'presentation mode' and detection of PowerPoint full-screen presentations.

Build 329 Version 3.2 - 2009-03-29


  Cosmetic Bug
Symptom
GUI-Process crashes after the main dialog is closed. User is not affected because the child process is about to be terminated anyway.
Change
Fixed call of WebBrowser Release function.

Build 328 Version 3.2 - 2009-03-27


  Critical Bug
Symptom
The service terminates a package with status ABORTED:POWEROFF. This happens rarely when a large number of queued packages are being processed with 'Logoff=1'.
Explanation
The progress dialog that displays the list of queued packages would crash because a different thread modified the list simultaneously.
Change
Added thread-safety by protecting the list with a critical section.

Flash a light during execution  New Feature

Symptom
The scroll lock indicator now blinks during package installation with Logoff=1. If the hardware is a ThinkPad, the 'think light' is also flashed.
Explanation
An indicator is needed when no monitor is attached. Beep is too annoying in a factory environment.
Change
The Service-Parameter Blink=0 can disable the new default behavior.

Provide hotkey for debug console during execution  New Feature

Symptom
It is hard to troubleshoot a hung installation because no processes can be started manually when Logoff=1 packages are running.
Change
If Left-Ctrl and Right-Ctrl are pressed during installation, a debug console is opened on the installation screen. Requires verification of admin credentials.

Build 327 Version 3.2 - 2009-03-19


  Simple Bug
Symptom
After a command initiates a reboot, the execution of the next command is started before the reboot is performed.
Explanation
In certain rare cases the system shutdown would terminate the GUI child process in a way that looks like a process startup problem. The service would then try to restart the execution.
Change
Fixed communication with child process to detect successful startup. A rerun is only tried if the startup was not successful.

Build 326 Version 3.2 - 2009-02-23


  Simple Bug
Symptom
After a package performs a reboot, a user is able to log in prematurely before the package is completed.
Explanation
The logon prompt 'Press Ctrl-Alt-Delete' appears after processing a reboot request. It stays visible for approx. 20 seconds until the logon is disabled.
Change
The pausing of the SMS client component does not work until WMI is fully initialized. Skipped this step after reboots, since component is already paused.

Use modern window style  Improvement

Symptom
UI dialogs and the progress bar are classic and do not use the XP/Vista style.
Change
Corrected manifest to use common-controls v6 when available.

Disable screen saver and standby during execution  Improvement

Symptom
Progress is not visible because the screen saver is activated during a package execution.
Change
The progress dialog now prevents screen-saver and other power sleep modes by setting the appropriate thread execution state.

Build 325 Version 3.2 - 2009-02-20


  Simple Bug
Symptom
Service crashes after running a large number of packages from an SMS task sequence.
Change
Fixed pointer error.

Implement mini-dump writing on crash  Improvement

Symptom
Program failures would go unnoticed if external error handling (DrWatson/CER/WER) is not used.
Explanation
Previously, when the execution of a package caused an application fault, this was not reported unless Windows Error Reporting was active.
Change
A minidump is now created in the Log-Directory with the dynamic name of 'service_build_computer_time.dmp'. Additionally a fake package name 'EXE_Ver_ERROR_REPORT' is generated for detection through the inventory.

Build 324 Version 3.2 - 2009-01-26


  Simple Bug
Symptom
The failure reason of an MSI installation is missing from the status detail.
Explanation
The setup status MIF file created by MSIEXEC was not correctly located.
Change
Fix for default /M parameter. Correct syntax is without '.MIF' extension.

Pause SMS during execution  Simple Bug

Symptom
SMS Software Distribution is not correctly paused during processing of queue.
Change
Fix to add local SMS policy correctly as partial policy.

Build 323 Version 3.2 - 2009-01-21


  Simple Bug
Symptom
A sub-package is not found when using an absolute path with the PKG: sub-command.
Explanation
The colon (:) of the drive letter was mistaken for the optional section name separator.
Change
Fixed

Support for larger number of commands  Simple Bug

Symptom
Not all commands are processed if a program section contains too many commands.
Explanation
The buffer receiving the list of commands was too small and error handling was not performing correctly.
Change
Increased size of buffer for list of commands from 4K to 32K. Error handling now reports CANCEL on overflow.

Pause SMS during execution  Improvement

Symptom
A package installation may be interrupted by SMS software distribution or software updates.
Explanation
SMS may perform a reboot without further warning when nobody is logged on. This can interrupt running packages in queue mode.
Change
The SMS client components for distribution and updates are now disabled during execution of packages in the queue.

Report duration of execution  New Feature

Symptom
The duration of the execution is displayed in the progress but is not recorded anywhere.
Change
Upon successful completion, the duration is now written to the event log, the package log file and to the package property in the registry.

Build 322 Version 3.2 - 2008-12-15


  Simple Bug
Symptom
Commands may be skipped after using jump commands in sub-routines.
Explanation
When using the flow-control commands GOTO, SKIPNEXT or EXIT from inside a sub-routine call, the instruction pointer of the calling routine was incorrectly modified.
Change
Fixed

Fix behavior for OSDQueue  Simple Bug

Symptom
The service is not started after a package is queued if the parameter OSDQueue is set.
Explanation
Error in query for OSD phase.
Change
Fixed

Prevent queuing of other package to disturb execution  Simple Bug

Symptom
The running package may be aborted when another package is queued simultaneously.
Explanation
The "do not disturb" service state was sometimes lost during sub-package calls. This would result in the queue process stopping the running service.
Change
Fixed

Properly reject queueing of package with build number '0'  Cosmetic Bug

Symptom
Cannot execute a queued package with build number 0.
Explanation
Packages with a build number of 0 are not valid. An error was thrown upon execution but not upon queuing.
Change
Only a package with a valid build number (0 < build < MAXDWORD) can be queued.

Support remote user sessions  Improvement

Symptom
No user dialog is displayed to a user logged in via terminal session.
Explanation
The console ("glass") session was given a strict priority. This is not feasible for pure virtual clients, as their console session is never used.
Change
The info dialog is now displayed on the currently active session. The progress dialog is still only displayed on the console session.

Build 321 Version 3.1 - 2008-11-19


  Simple Bug
Symptom
The parameter SuppressFinalReboot=1 is not performing as expected.
Explanation
Parameter was not correctly propagated to the registry queue.
Change
Fixed

Delay package execution until task sequence has finished  New Feature

Symptom
SCCM Task Sequence does not behave well when packages perform reboots in OSD phase.
Change
New optional parameter OSDQueue detects windows setup is still running (OSD phase) and does not process queued packages until setup has completed.

Build 319 Version 3.1 - 2008-10-06


  Simple Bug
Symptom
Service hangs after processing the queue, process does not terminate.
Explanation
Process exit is prevented by still running threads or other resources.
Change
Changed usage of CreateThread API (Win32) to recommended _beginthreadex (CRT)

Build 318 Version 3.1 - 2008-06-17


  Simple Bug
Symptom
After starting up the computer, a network error is reported when starting a package that was queued earlier.
Explanation
Only occurs when queuing packages silently and performing a reboot to start their execution.
Change
Fixed

Suppress dialog in task sequence  Improvement

Symptom
A lot of informational dialogs have to be confirmed when starting several packages from an SMS task sequence.
Explanation
A dialog is shown after each execution because the queue emptied before proceeding with the next package.
Change
Suppressed final dialog when running within a task sequence.

Synchronize execution with task sequence  Improvement

Symptom
Support for SMS task sequences
Explanation
When starting packages within an SMS task sequence, the service competes with the internal task sequence service. This may lead to parallel execution of actions.
Change
New behavior is that the process that queues the package will wait for the service to finish executing the package before terminating. This synchronizes the flow of execution with the task sequence.

Build 317 Version 3.0 - 2008-05-23


  Improvement
Symptom
Inventory is triggered too often when running inside an SMS task sequence.
Change
Suppressed triggering hardware inventory cycle when running within a task sequence.

Build 316 Version 3.0 - 2008-03-11


  Improvement
Symptom
When queuing a package from a CD media source, all files get a read-only attribute.
Explanation
This is a default behavior of a windows API when copying files from CD.
Change
Clearing Read-Only attribute when using CopyLocal=1 from a CD.

Fix SCCM inventory trigger  Improvement

Symptom
Support for triggering inventory under SCCM 2007
Explanation
API remains the same, but an empty 'action' prevents finding the correct action to trigger.
Change
Fixed

Support reboot from task sequence  Improvement

Symptom
SMS / SCCM task sequences do not support reboots not performed by themselves.
Change
When running under a task sequence, a reboot is never performed directly. Instead a request for reboot is sent to the task sequence.

Auto reboot at end of package  New Feature

Symptom
A reboot is missing because all dynamic reboots were suppressed.
Explanation
Can happen if a reboot is suppressed in one command but should be performed later - but the later reboot is skipped due to the flow of execution. This can result in a missing reboot.
Change
New behavior is that a pending reboot is automatically performed after the last command. The new parameter SuppressFinalReboot can be used to prevent this.

Build 315 Version 3.0 - 2008-02-20


  Cosmetic Bug
Symptom
The customized wallpaper is sometimes not displayed after a reboot.
Explanation
When the file cannot be opened because the machine is still booting up, the default wallpaper is used instead.
Change
Fixed

Reporting of SMS advertisement  New Feature

Symptom
SMS advertisement id is not reported
Change
The active SMS advertisement is detected and written into the new property SMSAdvertID.

Build 314 Version 3.0 - 2008-01-09


  Simple Bug
Symptom
When executing a package under Windows XP, two progress dialog are displayed, one of which is not updated.
Explanation
A bug was introduced in build 307 that is not easily noticeable because the two dialogs overlap perfectly. Vista is not affected.
Change
Fixed broken if statement.

Fixed parsing of spaces in tests  Simple Bug

Symptom
A test expression is not correctly evaluated if it has space characters at the end.
Change
Corrected behavior of parser.

Fixed logging of test results  Cosmetic Bug

Symptom
The last part of the string that describes a test result is missing.
Explanation
Wrong truncation.
Change
Fixed

Enhanced performance for WMI tests  Improvement

Symptom
Evaluation of a test condition with WMIExist may take a long time to complete.
Explanation
Certain WMI class instances take a long time to enumerate, depending on the provider i.e. Win32_QuickfixEngineering.
Change
A WQL select query is now run whenever wildcards are not used in the expression. This is more efficient because not all instances have to be examined.

Optional skip of network wait after reboot  New Feature

Symptom
Starting of commands is delayed after a reboot.
Explanation
Default behavior of the service is to wait for the Workstation service to come up before starting any commands.
Change
A new parameter NoNetworkWait can selectively turn of the delay for a command by not waiting for the Workstation service.

Build 313 Version 3.0 - 2007-10-09


  Simple Bug
Symptom
Using RegValue generates a protection fault.
Change
Fixed handling of buffer size.

Build 312 Version 3.0 - 2007-08-02


  Simple Bug
Symptom
Incorrect test results when comparing a numeric registry value using RegValue.
Explanation
A registry value greater than 0x00FFFFFF is truncated when compared because the internal type is INT.
Change
Changed internal type to unsigned long integer (DWORD).

Support hex numbers in tests  New Feature

Symptom
Support for hexadecimal numbers in tests expressions.
Change
Hexadecimal numbers can now be used in tests with a prefix of "0x".

Build 311 Version 3.0 - 2007-07-20


  Simple Bug
Symptom
When using parameter -k, execution starts too early before the user is properly logged off.
Change
Fixed waiting for user logoff to complete.

Minimized console window on execution  Improvement

Symptom
The console window is visible whenever a command writes output text.
Change
The console window is shown minimized to be less intrusive.

Build 310 Version 3.0 - 2007-06-10


  Cosmetic Bug
Symptom
The desktop wallpaper would in some cases remain changed for the user after a package is finished.
Explanation
Under Vista, a window is used to display a background during execution. Setting a wallpaper does not produce the desired effect as with previous windows versions.
Change
Wallpaper is not changed at all if OS is Vista or later.

Error message for admin rights  Improvement

Symptom
Confusing error message when run without admin rights.
Explanation
Under XP an error is reported when writing to the queue. With Vista the writes may be virtualized which causes more confusion when the resulting queue is actually empty.
Change
Introduced a check for administrative rights on startup. Exe terminates gracefully with proper message and status MIF file.

Fix backward compatibility when packages queued with old version  Improvement

Symptom
Command flags (IgnoreError, Reboot) are ignored if the active package was queued by an older build (less than 256).
Explanation
The current build uses a new format to store command flags in the registry queue.
Change
Fixed backwards compatibility to read old format packages flags from the queue.

Support for SCCM 2007  Improvement

Symptom
The package and advertisement is not correctly identified when running under ConfigMgr 2007.
Explanation
Some WMI classes for software distribution have changed.
Change
Name change of WMI classes is accounted for.

Build 309 Version 3.0 - 2007-05-16


  Improvement
Symptom
Older log files loose extension .log.
Change
Existing old log files are renamed using their respective dates but keep the extension .log.

List used parameters in log file  Improvement

Symptom
Log file does not show package parameters.
Change
The log file now reports all non-default parameters of the package as well as parameters of each command.