V
Viviana Vc
Hi all,
Until now I was having an InstallScript installer that was used only for
installing the product and uninstalling it. The update feature was
something we developed internaly and it was patching the installed
files. One of the installations file is an lsp.dll (layered service
provider) which is a dll loaded by any network application from the
machine.
VC++ gives you a different binary every time you build it because of
some timestamps. So, because of that, the lsp.dll file needed to be
patched every time even though there were no changes besides being
rebuilt. Being in use by different application at the time of patching,
it was a file in use so our updare feature was using a trick in order to
replace it and not asking for a reboot every time:
- renamed the old lsp.dll (renaming works for a file in use)
- patched a copy of this file
- put this new file as lsp.dll
The new opened application then were using teh new lsp.dll and the
application already started before the patch were using the old lsp.dll
as it was already loaded for them, but it was no problem as anyhow there
was no major change.
Now we have to switch our installer to MSI and because of the above
issues I have the following questions:
1) If I use the MSI patch, because a file is in use, it will request a
reboot correct? (I haven't tried this out but this is what I have read)
2) If yes, is there any way to delay/avoid the reboot (as I know that
the lsp.dll doesn't really need to be replaced right away as it's
changes are not major)?
3) If I can't avoid the reboot, is there any way to accomplish the same
behaviour like the one described above using MSI patches? (meaning
renaiming old lsp.dll and then copy the new one) This method should of
course not be broken if the user uninstalls the patch.
4) We could use our own update feature also if we change the installer
to an MSI, but if after an update done by us the user choses repair then
the user might end up with the previous version of the product, the one
used to install it. Is there a way to completely remove the repair
feature from a MSI? (meaning from advertising, add/remove programs,
right-click a MSI, command line, etc)
Sorry for the long post and thx in advance,
Viv
Until now I was having an InstallScript installer that was used only for
installing the product and uninstalling it. The update feature was
something we developed internaly and it was patching the installed
files. One of the installations file is an lsp.dll (layered service
provider) which is a dll loaded by any network application from the
machine.
VC++ gives you a different binary every time you build it because of
some timestamps. So, because of that, the lsp.dll file needed to be
patched every time even though there were no changes besides being
rebuilt. Being in use by different application at the time of patching,
it was a file in use so our updare feature was using a trick in order to
replace it and not asking for a reboot every time:
- renamed the old lsp.dll (renaming works for a file in use)
- patched a copy of this file
- put this new file as lsp.dll
The new opened application then were using teh new lsp.dll and the
application already started before the patch were using the old lsp.dll
as it was already loaded for them, but it was no problem as anyhow there
was no major change.
Now we have to switch our installer to MSI and because of the above
issues I have the following questions:
1) If I use the MSI patch, because a file is in use, it will request a
reboot correct? (I haven't tried this out but this is what I have read)
2) If yes, is there any way to delay/avoid the reboot (as I know that
the lsp.dll doesn't really need to be replaced right away as it's
changes are not major)?
3) If I can't avoid the reboot, is there any way to accomplish the same
behaviour like the one described above using MSI patches? (meaning
renaiming old lsp.dll and then copy the new one) This method should of
course not be broken if the user uninstalls the patch.
4) We could use our own update feature also if we change the installer
to an MSI, but if after an update done by us the user choses repair then
the user might end up with the previous version of the product, the one
used to install it. Is there a way to completely remove the repair
feature from a MSI? (meaning from advertising, add/remove programs,
right-click a MSI, command line, etc)
Sorry for the long post and thx in advance,
Viv