EVALUATION
discussed with Bill
install\make\installerdll\installerdll\src\installer\RegInstall.cpp: Remove*MSICache() functionality should be moved to the wrappers that put the files under AppData
Instead of the MSI cleaning up during uninstall, the wrapper cleans up during install
- installer.def:
- MSIRemoveJREMSICache
- MSIRemoveJDKMSICache
RegInstall.cpp:
-BOOL RemoveMSICache(const enum InstallTypes installType)
-UINT MSIRemoveJREMSICache(MSIHANDLE hInstall)
-UINT MSIRemoveJDKMSICache(MSIHANDLE hInstall)
RegInstall.h:
-BOOL RemoveMSICache(const enum InstallTypes installType)
-UINT MSIRemoveJREMSICache(MSIHANDLE hInstall)
-UINT MSIRemoveJDKMSICache(MSIHANDLE hInstall)
ControlEvent.idt, CustomAction.idt, InstallExecuteSequence.idt:
-RemoveJ*MSICache
-MSIRemoveJ*MSICache
Test cases need to include making sure the files are deleted when the user cancels the install at various dialogs.
Looking at the JRE online wrapper
http://opengrok.ie.oracle.com:8080/source/xref/jdk7u-dev/install/make/installer/bundles/windows/ishield/wrapper_online/jre/jinstall.cpp#1163
it looks there is already code to delete the files, if not the directories:
// We want to keep the MSI and MST files when the user has cancelled FilesInUse
// and opted for a retry. so only delete these files for installations that are
// NOT setting up a RunOnce, aka install re-try.
if (!bKeepAppDataFiles) {
::DeleteFile(szSinglemsiCachedFile);
::DeleteFile(szMSTCachedFile);
::DeleteFile(szSPDLLCachedFile);
}
After making sure the directory is handled, the code needs to be copied to the JRE offline,
then expanded to handle the multiple .cab files for the JDK installer.
|