[wpkg-users] Re-check of installed packages not possible
Falko Trojahn
ftrojahn at smi-softmark.de
Sun Jun 25 16:27:56 CEST 2006
Hi all,
I think there should be a way to check if somebody has - perhaps
accidentially - erased
packages and re-install them if they are not installed any more. Sorry
for the long mail,
but I'd like to explain it in detail.
Recently I came across the following situation:
in officexp.xml I have
<package
id="msofficexp"
name="Microsoft Office XP"
revision="1"
reboot="false"
priority="49">
<check type="logical" condition="or">
<check type="uninstall" condition="exists" path="Microsoft Office XP Professional" />
<check type="uninstall" condition="exists" path="Microsoft Office XP Professional mit FrontPage" />
</check>
</package>
<package
id="msofficexp-SP3"
name="Microsoft Office XP SP3"
revision="1"
reboot="false"
priority="49" >
<depends package-id="msofficexp" />
<check type="logical" condition="or">
<check type="registry" condition="exists" path="HKLM\SOFTWARE\Classes\Installer\Patches\568E7574292040E449D0C91550A2D56D\SourceList\PackageName" />
<check type="registry" condition="exists" path="HKLM\SOFTWARE\Classes\Installer\Products\7040110900063D11C8EF00054038389C\Patches\Patches" />
</check>
<install cmd='w:\updates\OfficeXP\OfficeXpSP3-KB832671-FullFile-DEU.exe /r:n /q /c:"msiexec /qb /l* %SystemDrive%\netinst\logs\kb832671.txt /p MAINSP3ff.msp REBOOT=ReallySuppress"' >
<exit code="3010" />
<exit code="0" />
</install>
<remove cmd='' />
<upgrade cmd='' />
</package>
<package
id="msofficexp-kb905758"
name="Microsoft Office kb905758"
revision="1"
reboot="false"
priority="49" >
<depends package-id="msofficexp-SP3" />
<check type="registry" condition="exists" path="HKLM\SOFTWARE\Classes\Installer\Patches\6DA596CAD81FDD54C98C62D4BC87E46A\SourceList\PackageName" />
<install cmd='w:\updates\OfficeXp\officexp-KB905758-FullFile-deu.exe /r:n /q /c:"msiexec /qb /l* %SystemDrive%\netinst\logs\kb905758.txt /p PPINTLff.msp REBOOT=ReallySuppress" '>
<exit code="3010" />
<exit code="0" />
</install>
<remove cmd='' />
<upgrade cmd='' />
</package>
So this should check if Office is installed, and if yes, install the
recent patches. As you can
see, Office XP SP3 depends from Office XP, and msofficexp-kb905758
depends from
msofficexp-SP3, so all looks good if installed with wpkg.
In the meantime someone has deinstalled Office manually (yes, there are
guys out there doing this ;-)
and wpkg didn't notice this - or he upgraded to Office 2007 Beta, or
whatever.
If I've set "quitonerror = true" all is fine:
checking existence of package:Microsoft Office XP
Uninstall entry for Microsoft Office XP Professional missing: test failed
Uninstall entry for Microsoft Office XP Professional mit FrontPage
missing: test
failed
Result of logical 'OR' check is false
Installing Microsoft Office XP...
checking existence of package:Microsoft Office XP
Uninstall entry for Microsoft Office XP Professional missing: test failed
Uninstall entry for Microsoft Office XP Professional mit FrontPage
missing: test
failed
Result of logical 'OR' check is false
Installation error while synchronizing package Microsoft Office XP,
synchronizat
ion aborting.
Could not install Microsoft Office XP.
with quitonerror = false
checking existence of package:Microsoft Office XP
Uninstall entry for Microsoft Office XP Professional missing: test failed
Uninstall entry for Microsoft Office XP Professional mit FrontPage
missing: test
failed
Result of logical 'OR' check is false
Installing Microsoft Office XP...
checking existence of package:Microsoft Office XP
Uninstall entry for Microsoft Office XP Professional missing: test failed
Uninstall entry for Microsoft Office XP Professional mit FrontPage
missing: test
failed
Result of logical 'OR' check is false
checking existence of package:Microsoft Office kb905758
The registry path
'HKLM\SOFTWARE\Classes\Installer\Patches\6DA596CAD81FDD54C98C6
2D4BC87E46A\SourceList\PackageName' does not exist: the check failed
Installing Microsoft Office kb905758...
executing command : w:\updates\OfficeXp\officexp-KB905758-FullFile-deu.exe
/r:n
/q /c:"msiexec /qb /l* %SystemDrive%\netinst\logs\kb905758.txt /p
PPINTLff.msp R
EBOOT=ReallySuppress"
command returned result: 0
checking existence of package:Microsoft Office kb905758
The registry path
'HKLM\SOFTWARE\Classes\Installer\Patches\6DA596CAD81FDD54C98C6
2D4BC87E46A\SourceList\PackageName' does not exist: the check failed
checking existence of package:Microsoft Office kb916519
The registry path
'HKLM\SOFTWARE\Classes\Installer\Patches\7D1EDB07CFE3D9943966F
5425B1FFF2A\SourceList\PackageName' does not exist: the check failed
Package name: Microsoft Office XP
Could not install Microsoft Office XP.
Failed checking after installation.
Package name: Microsoft Office kb905758
Could not install Microsoft Office kb905758.
Failed checking after installation.
Package name: Microsoft Office kb916519
Could not install Microsoft Office kb916519.
Failed checking after installation.
Package name: Microsoft Office kb917335
Could not install Microsoft Office kb917335.
Exit code returned non-successful value: -2147023829.
... and so on - every patch hit the client with a dialog box and notified him of not being able to install the
upgrade patch since the underlying product isn't installed.
The problem here is, that
a) wpkg didn't notice that Office XP isn't installed any more, and
b) if I manually remove e.g. msofficexp-SP3 with /remove, the dependent packages aren't deinstalled, too. And
c) if I manually reinstall with /install, wpkg "thinks" that the patches for Office are installed, but
does not reinstall them
Only solution was to use /force, but this even tries to remove things which aren't installed - not wanted here.
I'd suggest
- implement dependencies for removal, too (this hits another thing again:
priorities for removal in opposite order to installation ...)
- if the dependencies work, I can have something like
<check ... everytime="true" ... />
or
<package id="...." ... check="always" ... />
in a package, like the "msofficexp" package above. So, every time wpkg is run, this check is done,
and if the condition isn't met, the package isn't there, and can be removed, and
all packages which depend from it, too.
What do you think?
Falko
_______________________________________________
wpkg-users mailing list
wpkg-users at lists.wpkg.org
http://lists.wpkg.org/mailman/listinfo/wpkg-users
More information about the wpkg-users
mailing list