Thanks you for your answer.
Still I can't realize how the system determines which package is newer in order to update the current one. I think the decision is related to the version attribute in the XML descriptor file:
I have installed a package with version '1' (written as the value of the version attribute in the descriptor file).
I creates three different VIBs, differ from the installed one only by that version attribute:
When the value was '0', the package was installed and I got the following message:
esxcli software vib update --no-sig-check -v /vmfs/volumes/datastore1/package.vib
Installation Result
Message: Host is not changed.
Reboot Required: false
VIBs Installed:
VIBs Removed:
VIBs Skipped: package_0
Next I tried installing the VIB with version value '1':
~ # esxcli software vib update --no-sig-check -v /vmfs/volumes/datastore1/package.vib
[TypeError]
can't compare datetime.datetime to NoneType
Please refer to the log file for more details.
Finally I installed the VIB with the version value '2':
~ # esxcli software vib update --no-sig-check -v /vmfs/volumes/datastore1/package.vib
Installation Result
Message: The update completed successfully, but the system needs to be rebooted for the changes to be effective.
Reboot Required: true
VIBs Installed: package_2
VIBs Removed: package_1
VIBs Skipped: