JDK-6775670 : Need to send unique ping and exit gracefully when user cancels install via FilesInUse
  • Type: Bug
  • Component: install
  • Sub-Component: install
  • Affected Version: 6u5,6u10,6u14
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • OS: generic,windows,windows_xp
  • CPU: generic,x86
  • Submitted: 2008-11-24
  • Updated: 2013-06-04
  • Resolved: 2009-03-30
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
6u14 b04Fixed 7Fixed
Related Reports
Duplicate :  
Duplicate :  
Duplicate :  
In 6u10, we now download the MSI before showing the license agreement.  The user can click on cancel during the download.  We ping 1602 if they click on cancel.  

Basically, we need to make that we have a ping for these 2 scenarios:

1. User cancels download dialog
2. User clicks on disagree in the license dialog.

EVALUATION As download dialog happens before the license agreement, and part of the license agreement is the user agreeing that it's ok to send pings, for 6u14 we'd like to only send a unique ping code for a FileInUse cancel. Changing abstract to reflect what will actually be fixed with this CR: 1. Detect a FilesInUse cancel and exit gracefully. 2. Send a unique ping (NOT 1603) for the above. Targeting for 6u14 b04

EVALUATION The code is currently designed to NOT send a ping when the license agreement is declined. The progression is as follows: In the MSI control event table: LicenseAgreement.LicenseCancel.Click() results in LicenseDeclineCancel. LicenseDeclineCancel.Yes.Click() results in execution of CA SetLicenseDecline. SetLicenseDecline calls RegUtilsMSI::SetLicenseDecline(). In RegUtilsMSI::SetLicenseDecline(): The regkey, "HKLM\Software\JavaSoft\InstallStatus" is appended with, "decline." The above registry key is used to build the XML that is sent to omniture via SSL (HTTPS) in the function RegUtils::SendHeadRequest(). In that function: if (lstrcmp(state,STATE_INSTALL_COMPLETE)== 0) { // {...} // szURL is a TCHAR value of HKLM\Software\JavaSoft\InstallStatus if ((error != ERROR_SUCCESS) || (lstrcmp(szURL, "decline") == 0)) { //Delete Visid after the installation is complete SetJavaUpdateStringKey(NULL, REG_JUPDATE_VISID, NULL); SetJavaUpdateStringKey(NULL, REG_JUPDATE_METHOD, NULL); } //Don't post if License declined if (lstrcmp(szURL, "decline") == 0) return TRUE; wsprintf(szICStatus, ";jre|%d", error); // {...} } As the ping will be sent by the wrapper (same for both online and offline) during an INSTALL_COMPLETE state, if the user has declined the License Agreement, the ping will never be sent (the function returns before any of the WININET API calls that follow). In order to process a declined license agreement, the above code will need to be removed and the DWORD value of "error", which is passed into SendHeadRequest(), would need to be changed to something distinct from the return code from the MSI (1602). Likewise, code will need to be added to RegUtilsMSI to write a keyword for a FilesInUse.Cancel.Click() event, as well as the supporting CAs in the MSI, etc. The added block in SendHeadRequest() will be as follows: if ((error != ERROR_SUCCESS) || (lstrcmp(szURL, "decline") == 0) || (lstrcmp(szURL, "fiucancel") == 0)){ //Delete Visid after the installation is complete SetJavaUpdateStringKey(NULL, REG_JUPDATE_VISID, NULL); SetJavaUpdateStringKey(NULL, REG_JUPDATE_METHOD, NULL); } //Post discreet error if License declined or FIU cancel if (lstrcmp(szURL, "decline") == 0){ error = 1698; } else if (lstrcmp(szURL, "fiucancel") == 0){ error = 1699; } //Update ICStatus with error code wsprintf(szICStatus, ";jre|%d", error); The above change targeted for 6u14 b03.

EVALUATION I ran the installer and cancelled the license agreement dialog. It didn't log anything to %TEMP%/jusched.log, but I'm sure it does ping something (we have omniture pings for cancel). Part of this fix should make sure we log the pings in *all* cases.

EVALUATION I ran the 6u11 online installer, and clicked cancel on the download dialog....no pings were sent.