4080 lines
142 KiB
HTML
4080 lines
142 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
<HTML>
|
|
<HEAD>
|
|
<TITLE>File a bug report</TITLE>
|
|
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8" >
|
|
<LINK ID=Stylesheet_Ref href="bugrep.css" rel=STYLESHEET type=text/css>
|
|
<META content=/scripts/PostInfo.asp name=postinfo>
|
|
<OBJECT ID=pchealth classid=CLSID:FC7D9E02-3F9E-11d3-93C0-00C04F72DAF7></OBJECT>
|
|
<!--
|
|
******************************************************************
|
|
Copyright (c) 1999 Microsoft Corporation
|
|
|
|
Module Name:
|
|
Bug Reporting Page
|
|
|
|
File:
|
|
bugrep.htm
|
|
|
|
Abstract:
|
|
Bug reporting channel for Whistler beta
|
|
|
|
Internal Version : 1.000
|
|
|
|
1999-09-10 : Cleaned up formatting of HTML and made syntax clean
|
|
1999-09-20 : Cleaning up code
|
|
1999-09-21 : Bugs P1 99969, 102646, 102645, 102740, 102196 (102811?)
|
|
1999-09-22 : Cleaned up formatting, added removing from a list and
|
|
made localization easier
|
|
1999-09-23 : Made printing easier with expanding text areas
|
|
1999-09-27 : Removed leading spaces from filenames in AddFile
|
|
BetaID field accepts only 0-9 values
|
|
Error message if XML files are missing (broken install)
|
|
1999-09-28 : Fixed alignment of text areas to top
|
|
Fixed focus related bug in text areas
|
|
Fixed to be more localization friendly (Bug 103361)
|
|
Removed config.sys and autoexec.bat from collected file list
|
|
1999-09-29 : Added user.dat, system.dat and classes.dat to default file list
|
|
1999-09-30 : Added DirectX data collection
|
|
Added system drive path instead of \..\ convention
|
|
Added option to handle data collection failures
|
|
1999-10-01 : Added ActiveX object to collect build and language info
|
|
Register ActiveX object on script load (brp_sysinfo.dll)
|
|
Added tracking number after data upload
|
|
Moved thankyou into a SPAN to display tracking after upload
|
|
1999-10-05 : Adding IEINFO5.MOF to cab and using MOFCOMP to compile this
|
|
Collecting IE info along with machine data
|
|
Forced extension of saved file to be CAB (bug 102973)
|
|
1999-10-06 : Changed directx diag running mode to 1
|
|
Disabled DirectX data collection
|
|
1999-10-11 : Changed max sizes of text-areas to 2000
|
|
Changed to use bugrep.css
|
|
1999-10-12 : Added xml files to list of collected files
|
|
1999-10-13 : Fixed IE realted break
|
|
1999-10-13 : Added min space image
|
|
1999-10-16 : When no info checked direct CAB creating skipping DC
|
|
Registry files collected only for Area = Setup
|
|
CollecOk related bugs fixed
|
|
Restructed flow to have Save and Submit check boxes
|
|
Report bytes transmitted in upload
|
|
Changed CAB file name to preserve all .'s in filename
|
|
Behaviour changed to hide all input field when saving
|
|
or submitting bug so that no fields can be changed
|
|
After finishing all fields are restored
|
|
Upload bug reporting page version in incident XML
|
|
Changed cursor to busy when uploading/saving bug
|
|
Disabled controls during submit
|
|
Added record of incidents using SAF framework for
|
|
saved and submitted incidents in a \incidents
|
|
directory
|
|
1999-10-18 : Set focus to beta id on page load
|
|
Set focus to missing entry when validating form
|
|
Removed .'s from BetaID
|
|
Declared all objects locally/globally
|
|
Order of error checking consistent with screen order
|
|
Fix for MOF command not returning after finishing
|
|
1999-10-19 : Changed Confirm to have title
|
|
Added link to winbeta site
|
|
Added bug page version
|
|
If failure then do not get streams
|
|
Changed Run commands to use short path name for IEINFO
|
|
Changed Run commands to use short path name for SYSINFO
|
|
1999-10-23 : Changed checking of stream to JS code to work around VB problem
|
|
1999-10-24 : Added collecting hcupdate.log
|
|
Added collecting WMI logs
|
|
Added dc_onComplete function
|
|
1999-10-25 : Find build number and do proper RecordIncident
|
|
1999-10-26 : Changed occured to occurred
|
|
Added width for space.gif image for localization
|
|
1999-10-27 : Updated xml files to handle changes to dataspec.xml
|
|
1999-10-28 : Text boxes on incident view have scroll bars but no edit/cut/paste
|
|
Fixed . in file name to be at end
|
|
Changed Done to Submit
|
|
1999-10-28 : Fixed to initialize only once (brp_init.ini)
|
|
Save incident data in csv files
|
|
Added resume.txt
|
|
Fixed build break
|
|
1999-10-30 : Added presisting betaid and other options
|
|
Added DrWatson log collection
|
|
Added display for cabbit and directX
|
|
Extensive validation of filenames
|
|
Auto filling of filename from title
|
|
Set default folder to millennium bugs
|
|
1999-11-09 : Adding local LCID and ACP to handle Local translations
|
|
Updated xml files to collect data
|
|
1999-12-02 : Changed page encoding to UTF-8 to display special characters (118165)
|
|
Fixed extra space in recorded incident page (119877)
|
|
Fixed localizability with BRP Version string (121829)
|
|
1999-12-06 : Removed IEMOF section, because IE5 providers are already registered on
|
|
Whistler (3529);
|
|
Removed BRP_INFO registration section, because brpinfo.dll is installed as
|
|
part of helpctr (millen bug#121483).
|
|
2000-04-27 : Began modifying bugrep.htm for deployment to Whistler Beta Program web server and
|
|
application. (DougA)
|
|
2000-05-22 : Finalized changes, incremented version number
|
|
2000-06-06 : Changed tracking number text since tracking numbers will come from the server
|
|
2000-08-01 : Began work on changes for Beta1. These changes will include:(DougA)
|
|
* New Areas
|
|
* Verification of Email address.
|
|
* Persistance of Email address.
|
|
* Regression, SKU and Upgrade questions.
|
|
* Feild limits match bugreporting page on http://windowsbeta.microsoft.com
|
|
* Text changes in the intro verbage.
|
|
* Drop requirement for BetaID.
|
|
* Rev the build number on the page.
|
|
2000-11-15 : Began changes for Beta2. Theses changes will include:(DougA)
|
|
* Persist major data ( sku, this problems happens, et et et...)
|
|
* Correct a mis-spelling in the SKU drop down.
|
|
* added a few files to be collected with bug report.
|
|
2001-2-13 : Globalized the above additions by adding ID attributes to the tags.(DougA)
|
|
2001-4-11 : Began changes for RC1. Theses changes will include: (DougA)
|
|
* New Area: HCT
|
|
* Change "Personal" - > "Home" in Area Drop down.
|
|
* Re-activate the DxDiag Div for both games and video areas.
|
|
* New Area: Fast User Switching
|
|
* New Text RE: Comments Link.
|
|
* Make sure all changes are localizable
|
|
* Rev Build Number
|
|
|
|
Requires following files
|
|
|
|
ErrCodes.vbs
|
|
bugrep.css
|
|
bug_upload_collect.xml
|
|
bug_upload_nocollect.xml
|
|
dataspec.xml
|
|
|
|
******************************************************************
|
|
-->
|
|
<SCRIPT ID="ErrCodesList" LANGUAGE=VBScript SRC="ErrCodes.vbs"></SCRIPT>
|
|
<SCRIPT LANGUAGE=VBScript>
|
|
'
|
|
' Make sure all variables are declared explicitly and to make typos easier
|
|
' to find (in in the current code)
|
|
'
|
|
'option explicit
|
|
|
|
'
|
|
' ProductName (should be equal to product name field in SAF1.XML)
|
|
'
|
|
const L_BRP_Version = "5.00.00."
|
|
const L_BRPBuild_Version = "6000"
|
|
|
|
'
|
|
' ProductName (should be equal to product name field in SAF1.XML)
|
|
'
|
|
const L_ProductName_Version = "Microsoft Whistler Beta"
|
|
|
|
'
|
|
' Vendor directory under which all files are stored on the client
|
|
'
|
|
const L_VendorChannel_Address = "CN=Microsoft Corporation,L=Redmond,S=Washington,C=US"
|
|
'
|
|
' Title for all dialog message boxes
|
|
'
|
|
const L_MsgBoxTitle_Message = "Bug Reporting"
|
|
|
|
'
|
|
' Server name for uploading bugs
|
|
'
|
|
const L_ServerName_Address = "http://windowsbeta.microsoft.com/pchealth/UpLoadServer.dll"
|
|
|
|
'
|
|
' Field names
|
|
'
|
|
const L_MissingField_ErrorMessage = "Missing or incomplete required field: "
|
|
const L_FormField_FIELDNAME_BetaID_TEXT = "Beta ID"
|
|
const L_FormField_FIELDNAME_Emailaddr_TEXT = "Email address"
|
|
const L_FormField_FIELDNAME_Title_TEXT = "Problem title"
|
|
const L_FormField_FIELDNAME_Description_TEXT = "Describe the problem"
|
|
const L_FormField_FIELDNAME_Expected_TEXT = "What did you expect to happen"
|
|
const L_FormField_FIELDNAME_Repro_TEXT = "Enter the steps required to reproduce the problem"
|
|
const L_FormField_FIELDNAME_Severity_TEXT = "Problem type"
|
|
const L_FormField_FIELDNAME_SKU_TEXT = "This Windows install is the"
|
|
const L_FormField_FIELDNAME_regression_TEXT = "This Problem (2nd Dropdown)"
|
|
const L_FormField_FIELDNAME_upgrade_TEXT = "This install is"
|
|
|
|
|
|
const L_FormField_FIELDNAME_Area_TEXT = "Area"
|
|
const L_FormField_FIELDNAME_Reproducibility_TEXT = "This Problem (1st Dropdown)"
|
|
'
|
|
' Testing flag, set to 0 for release code, 1 for testing code and using the
|
|
' test server
|
|
'
|
|
const BRP_DebugFlag = 0
|
|
|
|
|
|
'
|
|
' Main code, only localization changes to be made after this section
|
|
'
|
|
const UL_HISTORY_LOG = 1
|
|
const UL_HISTORY_LOG_AND_DATA = 2
|
|
const UL_HISTORY_NONE = 0
|
|
|
|
const UL_BACKGROUND = 0
|
|
const UL_FOREGROUND = 1
|
|
|
|
const UL_ABORTED = 4
|
|
const UL_ACTIVE = 1
|
|
const UL_COMPLETED = 6
|
|
const UL_DELETED = 7
|
|
const UL_FAILED = 5
|
|
const UL_NOTACTIVE = 0
|
|
const UL_SUSPENDED = 2
|
|
const UL_TRANSMITTING = 3
|
|
|
|
const DC_NOTACTIVE = 0
|
|
const DC_COLLECTING = 1
|
|
const DC_FAILED = 2
|
|
const DC_COMPLETED = 3
|
|
|
|
const L_NoConnection1_ErrorMessage = "Bug can not be sent at this time because we detect no current internet connection."
|
|
const L_NoConnection2_ErrorMessage = "Please connect to the Internet and resend the bug, or deselect ""Submit to Microsoft now"" and select ""Save copy to disk"" only to save the bug for sending later (please see readme for batch uploading instructions)."
|
|
|
|
const g_TestingURL = "http://www.microsoft.com"
|
|
|
|
'
|
|
' g_oDc Data collection object
|
|
' g_oUpl Upload object
|
|
' g_oCab Cab creation object
|
|
'
|
|
Dim g_oDc, g_oUpl, g_oCab, g_nInProgress, g_bSaveIncident, g_bSubmitIncident
|
|
Dim g_bSaveIncidentSucceeded, g_bSubmitIncidentSucceeded
|
|
|
|
Dim g_bFormValid
|
|
Dim g_nCurrentBuild
|
|
|
|
Dim g_SettingsBetaId
|
|
Dim g_SettingsEmail
|
|
Dim g_SettingsSKU
|
|
Dim g_SettingsUpgrade
|
|
Dim g_SettingsLastPath
|
|
Dim g_SettingsShareInfo
|
|
Dim g_SettingsSubmitNow
|
|
Dim g_SettingsSaveToDisk
|
|
Dim g_CrashDumpFile
|
|
Dim g_KernelCrash
|
|
Dim g_CrashApp
|
|
Dim g_DeleteCrashDump
|
|
|
|
Set g_oDc = Nothing
|
|
Set g_oUpl = Nothing
|
|
Set g_oCab = Nothing
|
|
|
|
g_nCurrentBuild = 0
|
|
g_nInProgress = 0
|
|
g_bSaveIncident = False
|
|
g_bSaveIncidentSucceeded = False
|
|
g_bSubmitIncident= False
|
|
g_bSubmitIncidentSucceeded = False
|
|
g_bFormValid = False
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
' Validate form before submitting report
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub ValidateForm()
|
|
|
|
|
|
const L_BetaIDBadRange_ErrorMessage = "There is an problem with your betaid."
|
|
Dim misc_fields, colon, bang, field, description, BetaIDValue
|
|
Dim oFS
|
|
' Override the default behavior so we can control where we go.
|
|
window.event.cancelBubble = true
|
|
window.event.returnValue = false
|
|
|
|
'
|
|
'Format of misc-fields is a colon-separated list. Each entry
|
|
'consists of the field name to check, optionally followed by a
|
|
'bang and a human-readable description of that field.
|
|
'"BetaID!" & L_FormField_FIELDNAME_BetaID_TEXT & _
|
|
misc_fields = "Title!" & L_FormField_FIELDNAME_Title_TEXT
|
|
|
|
while misc_fields <> ""
|
|
colon = instr(misc_fields, ":")
|
|
if colon <> 0 then
|
|
field = left(misc_fields, colon-1)
|
|
misc_fields = right(misc_fields, len(misc_fields) - colon)
|
|
else
|
|
field = misc_fields
|
|
misc_fields = ""
|
|
end if
|
|
bang = instr(field, "!")
|
|
if bang <> 0 then
|
|
description = right(field, len(field) - bang)
|
|
field = left(field, bang-1)
|
|
else
|
|
description = field
|
|
end if
|
|
if IsNull(document.all(field)) or len(document.all(field).value) = 0 then
|
|
Call BRP_MessageBox(L_MissingField_ErrorMessage & description)
|
|
g_bFormValid = False
|
|
'
|
|
' Set focus to missing field
|
|
'
|
|
document.all(field).focus
|
|
exit sub
|
|
end if
|
|
wend
|
|
|
|
'Verify email value.
|
|
dim emailinput
|
|
emailinput = document.all.Emailaddr_Input.value
|
|
|
|
if ( (emailinput = "") or (len(emailinput) < 6) or (instr(emailinput,"@") = 0) or (instr(emailinput,".") = 0) or (instr(emailinput," ") <> 0) ) then
|
|
|
|
Call BRP_MessageBox(L_MissingField_ErrorMessage & L_FormField_FIELDNAME_emailaddr_TEXT)
|
|
g_bFormValid = False
|
|
document.all.Emailaddr_Input.focus
|
|
exit sub
|
|
end if
|
|
|
|
if document.all.Severity.value = "NA" then
|
|
Call BRP_MessageBox(L_MissingField_ErrorMessage & L_FormField_FIELDNAME_Severity_TEXT)
|
|
g_bFormValid = False
|
|
document.all.Severity.focus
|
|
exit sub
|
|
end if
|
|
|
|
if document.all.regression.value = "NA" then
|
|
Call BRP_MessageBox(L_MissingField_ErrorMessage & L_FormField_FIELDNAME_regression_TEXT)
|
|
g_bFormValid = False
|
|
document.all.regression.focus
|
|
exit sub
|
|
end if
|
|
|
|
if document.all.Area.value = "NA" then
|
|
Call BRP_MessageBox(L_MissingField_ErrorMessage & L_FormField_FIELDNAME_Area_TEXT)
|
|
g_bFormValid = False
|
|
document.all.Area.focus
|
|
exit sub
|
|
end if
|
|
|
|
if document.all.SKU.value = "NA" then
|
|
Call BRP_MessageBox(L_MissingField_ErrorMessage & L_FormField_FIELDNAME_SKU_TEXT)
|
|
g_bFormValid = False
|
|
document.all.SKU.focus
|
|
exit sub
|
|
end if
|
|
|
|
if document.all.upgrade.value = "NA" then
|
|
Call BRP_MessageBox(L_MissingField_ErrorMessage & L_FormField_FIELDNAME_upgrade_TEXT)
|
|
g_bFormValid = False
|
|
document.all.upgrade.focus
|
|
exit sub
|
|
end if
|
|
|
|
|
|
'
|
|
'Format of misc-fields is a colon-separated list. Each entry
|
|
'consists of the field name to check, optionally followed by a
|
|
'bang and a human-readable description of that field.
|
|
'
|
|
misc_fields = "Description!" & L_FormField_FIELDNAME_Description_TEXT & _
|
|
":ExpectedBehavior!" & L_FormField_FIELDNAME_Expected_TEXT & _
|
|
":StepsToRepro!" & L_FormField_FIELDNAME_Repro_TEXT
|
|
|
|
while misc_fields <> ""
|
|
colon = instr(misc_fields, ":")
|
|
if colon <> 0 then
|
|
field = left(misc_fields, colon-1)
|
|
misc_fields = right(misc_fields, len(misc_fields) - colon)
|
|
else
|
|
field = misc_fields
|
|
misc_fields = ""
|
|
end if
|
|
bang = instr(field, "!")
|
|
if bang <> 0 then
|
|
description = right(field, len(field) - bang)
|
|
field = left(field, bang-1)
|
|
else
|
|
description = field
|
|
end if
|
|
if IsNull(document.all(field)) or len(document.all(field).value) = 0 then
|
|
Call BRP_MessageBox(L_MissingField_ErrorMessage & description)
|
|
g_bFormValid = False
|
|
'
|
|
' Set focus to missing field
|
|
'
|
|
document.all(field).focus
|
|
exit sub
|
|
end if
|
|
wend
|
|
|
|
on error resume next
|
|
Err.Clear
|
|
'BetaIDvalue = CLng(document.all.BetaID.value)
|
|
'if Err.number <> 0 then
|
|
' Call BRP_MessageBox(L_BetaIDBadRange_ErrorMessage)
|
|
' g_bFormValid = False
|
|
' document.all.BetaID.focus
|
|
' exit sub
|
|
'end if
|
|
|
|
Set oFS = CreateObject("Scripting.FileSystemObject")
|
|
|
|
document.all.IncidentFilename.value = oFS.GetAbsolutePathName(document.all.IncidentFilename.value)
|
|
'
|
|
' Return validity flag in a global variable
|
|
'
|
|
g_bFormValid = True
|
|
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub ValidateTextLength(limit)
|
|
const L_TooLong1_ErrorMessage = "This text field is too long. It is limited to "
|
|
const L_TooLong2_ErrorMessage = " characters. The entry has been truncated."
|
|
|
|
if len(window.event.srcElement.value) > limit then
|
|
BRP_MessageBox L_TooLong1_ErrorMessage & CStr(limit) & L_TooLong2_ErrorMessage
|
|
window.event.srcElement.value = left(window.event.srcElement.value, limit)
|
|
window.event.srcElement.focus
|
|
end if
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
' Message box with OK and special title
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub BRP_MessageBox(msg)
|
|
|
|
Call MsgBox(msg,vbOKOnly,L_MsgBoxTitle_Message)
|
|
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
function BRP_Confirm(msg)
|
|
|
|
BRP_Confirm = MsgBox(msg,vbYesNo,L_MsgBoxTitle_Message)
|
|
|
|
end function
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub BRP_TraceMessage(msg)
|
|
|
|
if BRP_DebugFlag >= 2 then
|
|
Call MsgBox(msg,vbOKOnly,L_MsgBoxTitle_Message)
|
|
end if
|
|
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
function GetVendorPath()
|
|
|
|
Dim oChannel
|
|
|
|
Set oChannel= pchealth.CreateObject_Channel(L_VendorChannel_Address, L_ProductName_Version)
|
|
GetVendorPath = oChannel.VendorDirectory
|
|
|
|
end function
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
function GetWinPath()
|
|
|
|
Dim oFS
|
|
|
|
Set oFS = CreateObject("Scripting.FileSystemObject")
|
|
GetWinPath = oFS.GetSpecialFolder(0)
|
|
|
|
end function
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
function GetWinSystemPath()
|
|
|
|
Dim oFS
|
|
|
|
Set oFS = CreateObject("Scripting.FileSystemObject")
|
|
GetWinSystemPath = oFS.GetSpecialFolder(1)
|
|
|
|
end function
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
function GetTempPath()
|
|
|
|
Dim oFS
|
|
|
|
Set oFS = CreateObject("Scripting.FileSystemObject")
|
|
GetTempPath = oFS.GetSpecialFolder(2)
|
|
|
|
end function
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
' Only on Whistler
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
function GetSystemRootPath()
|
|
|
|
Dim oWshShell
|
|
|
|
Set oWshShell = CreateObject("WScript.Shell")
|
|
GetSystemRootPath = oWshShell.ExpandEnvironmentStrings("%SYSTEMROOT%")
|
|
|
|
end function
|
|
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
function GetSystemDrivePath()
|
|
|
|
Dim oWshShell, szWinBootDir, szSystemDrive
|
|
Dim slash
|
|
|
|
Set oWshShell = CreateObject("WScript.Shell")
|
|
szSystemDrive = oWshShell.ExpandEnvironmentStrings("%SYSTEMDRIVE%")
|
|
if len(szSystemDrive) <= 0 OR szSystemDrive = "%SYSTEMDRIVE%" then
|
|
szWinBootDir = oWshShell.ExpandEnvironmentStrings("%WINBOOTDIR%")
|
|
slash = instr(szWinBootDir,"\")
|
|
if slash <> 0 then
|
|
GetSystemDrivePath = left(szWinBootDir,slash-1)
|
|
else
|
|
GetSystemDrivePath = "C:"
|
|
end if
|
|
else
|
|
GetSystemDrivePath = szSystemDrive
|
|
end if
|
|
|
|
end function
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
function RunExternalApplicationDxDiag()
|
|
|
|
Dim oFS
|
|
Dim oWshShell
|
|
|
|
Set oWshShell = CreateObject("WScript.Shell")
|
|
Set oFS = CreateObject("Scripting.FileSystemObject")
|
|
|
|
szAppName = GetWinSystemPath & "\dxdiag.exe " & GetTempPath & "\dxdiag.txt"
|
|
|
|
Call BRP_TraceMessage(szAppName)
|
|
|
|
'
|
|
' Activate the window and display in minimum size
|
|
'
|
|
RunExternalApplicationDxDiag = oWshShell.Run(szAppName, 1, True)
|
|
|
|
end function
|
|
|
|
function RunExternalApplicationCabbit()
|
|
|
|
Dim oFS
|
|
Dim oWshShell
|
|
|
|
Set oWshShell = CreateObject("WScript.Shell")
|
|
Set oFS = CreateObject("Scripting.FileSystemObject")
|
|
|
|
szAppName = GetWinSystemPath & "\restore\cabbit.exe /f: " & GetTempPath & "\srdata.cab"
|
|
|
|
Call BRP_TraceMessage(szAppName)
|
|
|
|
'
|
|
' Activate the window and display in minimum size
|
|
'
|
|
RunExternalApplicationCabbit = oWshShell.Run(szAppName, 1, True)
|
|
|
|
end function
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
' Get build number from string of type X.XX.XXXX xxxx, assumes 4 digit build
|
|
' number and sets g_nCurrentBuild
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub BRP_SetOSBuild(szVer)
|
|
|
|
Dim period, szVer1, szVer2, szVer3
|
|
|
|
period = instr(szVer,".")
|
|
if period <> 0 then
|
|
szVer1 = right(szVer,len(szVer)-period)
|
|
period = instr(szVer1,".")
|
|
if period <> 0 then
|
|
szVer2 = right(szVer1,len(szVer1)-period)
|
|
szVer3 = left(szVer2,4)
|
|
nVer = CInt(szVer3)
|
|
g_nCurrentBuild = nVer
|
|
end if
|
|
end if
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub BRP_SetStatusMessage(msg)
|
|
|
|
document.all.Status.innerHTML = msg
|
|
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub BRP_SetProgressMessage(msg)
|
|
|
|
document.all.Status.innerHTML = msg
|
|
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub BRP_AppendProgressMessage(msg)
|
|
|
|
document.all.Status.innerHTML = document.all.Status.innerHTML & msg
|
|
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub SetProgress(percent)
|
|
|
|
L_PctDone_Message = "% done"
|
|
|
|
Call BRP_SetProgressMessage(percent & L_PctDone_Message)
|
|
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub dc_onProgress(DataCollectionPtr, done, total)
|
|
Dim PercentDone
|
|
|
|
if total = 0 then
|
|
' Avoid divide-by-zero errors.
|
|
total = 100
|
|
end if
|
|
PercentDone = Round(done / total * 90)
|
|
Call SetProgress(PercentDone)
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub dc_onStatusChange(DataCollectionPtr, status)
|
|
|
|
const L_DataCollection_STATUS_Collecting_Message = "Collecting data"
|
|
|
|
Dim szDCStatus
|
|
|
|
select case status
|
|
case DC_COLLECTING szDCStatus=L_DataCollection_STATUS_Collecting_Message
|
|
end select
|
|
|
|
Call BRP_SetStatusMessage(szDCStatus)
|
|
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub dc_onComplete(DataCollectionPtr, hresult)
|
|
|
|
const L_DataCollection_STATUS_NotActive_Message = "Not active"
|
|
const L_DataCollection_STATUS_Failed_ErrorMessage = "Failed data collection."
|
|
const L_DataCollection_STATUS_Completed_Message = "Creating CAB file."
|
|
const L_CollectError_ErrorMessage = "The following error occurred during data collection: "
|
|
const L_CollectErrorNoErrNum_ErrorMessage = "There was an error collecting data about your machine. "
|
|
const L_UploadOnlyFiles_Message = "Do you want to continue by submitting system files from your machine."
|
|
const L_SaveOnlyFiles_Message = "Do you want to continue by saving system files from your machine."
|
|
|
|
Dim status
|
|
Dim szDCStatus, szErrorMessage
|
|
|
|
status = g_oDc.status
|
|
status = CInt(status)
|
|
|
|
select case status
|
|
case DC_NOTACTIVE szDCStatus=L_DataCollection_STATUS_NotActive_Message
|
|
case DC_FAILED szDCStatus=L_DataCollection_STATUS_Failed_ErrorMessage
|
|
case DC_COMPLETED szDCStatus=L_DataCollection_STATUS_Completed_Message
|
|
end select
|
|
|
|
Call BRP_SetStatusMessage(szDCStatus)
|
|
|
|
if status = DC_FAILED or status = DC_COMPLETED then
|
|
UnregisterDCHandlers
|
|
if status = DC_COMPLETED then
|
|
CreateCab(False)
|
|
else
|
|
if hresult <> 0 then
|
|
szErrorMessage = L_CollectError_ErrorMessage & Err.description & " (" & Err.number & "). "
|
|
else
|
|
szErrorMessage = L_CollectErrorNoErrNum_ErrorMessage
|
|
end if
|
|
|
|
Err.Clear
|
|
|
|
if g_bSubmitIncident = True then
|
|
if BRP_Confirm( szErrorMessage & vbCrLf & L_UploadOnlyFiles_Message ) = vbYes then
|
|
CreateCab(True)
|
|
else
|
|
Call BRP_CleanupAfterCancelUpload
|
|
end if
|
|
else
|
|
if g_bSaveIncident = True then
|
|
if BRP_Confirm( szErrorMessage & vbCrLf & L_SaveOnlyFiles_Message ) = vbYes then
|
|
CreateCab(True)
|
|
else
|
|
Call BRP_CleanupAfterCancelUpload
|
|
end if
|
|
end if
|
|
end if
|
|
end if
|
|
end if
|
|
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub cab_onComplete(g_oCab, hr)
|
|
const L_CabError_ErrorMessage = "Couldn't create cab file due to error #"
|
|
const L_CabErrorStatus_ErrorMessage = "Error creating cab file."
|
|
|
|
if g_oCab.Status <> 2 then
|
|
Call BRP_MessageBox(L_CabError_ErrorMessage & Hex(hr))
|
|
Call BRP_SetStatusMessage(L_CabErrorStatus_ErrorMessage)
|
|
exit sub
|
|
End if
|
|
|
|
Call SetProgress(100)
|
|
|
|
'
|
|
' Save incident if required
|
|
'
|
|
Call ContinueSaveIncident()
|
|
|
|
'
|
|
' Upload incident if required
|
|
'
|
|
Call ContinueUploadIncident()
|
|
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub CollectData()
|
|
|
|
const L_DCFailed_ErrorMessage = "Data collection cannot be carried as the parameter files are missing."
|
|
const L_CabStartStatus_Message = "Creating CAB file."
|
|
|
|
Dim oFS
|
|
Dim iSpecNotFound
|
|
Dim szUploadXMLFileName
|
|
|
|
on error resume next
|
|
if Not (g_oDc is Nothing) then
|
|
set g_oDc = Nothing
|
|
end if
|
|
Set g_oDc = pchealth.CreateObject_DataCollection
|
|
|
|
Set oFS = CreateObject("Scripting.FileSystemObject")
|
|
|
|
iSpecNotFound = FALSE
|
|
|
|
if document.all.CollectOk.checked then
|
|
szUploadXMLFileName = "\bug_upload_collect.XML"
|
|
if oFS.FileExists( GetVendorPath & szUploadXMLFileName ) then
|
|
g_oDc.MachineData_Dataspec = GetVendorPath & szUploadXMLFileName
|
|
'
|
|
' If history file exists then use this else just upload regular files
|
|
'
|
|
if oFS.FileExists( GetWinPath & "\PCHealth\HelpCtr\Config\DataSpec.XML" ) then
|
|
g_oDc.History_Dataspec = GetWinPath & "\PCHealth\HelpCtr\Config\DataSpec.XML"
|
|
g_oDc.History_MaxDeltas = 5
|
|
else
|
|
iSpecNotFound = TRUE
|
|
end if
|
|
|
|
else
|
|
iSpecNotFound = TRUE
|
|
end if
|
|
else
|
|
'
|
|
' if a user unchecks data collection, we will not touch any data collection portion,
|
|
' and pretend a data collection failure; server side should check CollectOk flag
|
|
' before read into DCStatus
|
|
'
|
|
Call BRP_SetStatusMessage(L_CabStartStatus_Message)
|
|
Call CreateCab(TRUE)
|
|
exit sub
|
|
end if
|
|
|
|
if ( iSpecNotFound ) then
|
|
BRP_MessageBox L_DCFailed_ErrorMessage
|
|
Call BRP_CleanupAfterCancelUpload
|
|
else
|
|
RegisterDCHandlers
|
|
g_oDc.ExecuteASync
|
|
end if
|
|
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
function CreateIncident(oInc, iDCFailed)
|
|
'
|
|
' oInc Incident object
|
|
' iDCFailed False if data collection was OK
|
|
' True if data collection failed
|
|
'
|
|
const L_GetDataFailedSS_ErrorMessage = "Failed to get collected machine snapshot data."
|
|
const L_GetDataFailedHS_ErrorMessage = "Failed to get collected machine history data."
|
|
const L_IncCollectError_ErrorMessage = "The following error occurred during data collection: "
|
|
|
|
Dim oTmpStream, oDict, oSysInfo
|
|
Dim misc_fields, field, colon
|
|
Dim fDataValid, fHistoryValid
|
|
|
|
' Colon-separated list of fields to be stored in the data dictionary
|
|
misc_fields = "emailaddr:Title:Severity:Area:Reproducibility:ExpectedBehavior:StepsToRepro"
|
|
|
|
Set oInc = pchealth.CreateObject_Incident()
|
|
|
|
'Prep the description with addtional information (SKU, regression, upgrade information)
|
|
|
|
dim Final_Description
|
|
Final_Description = ""
|
|
Final_Description = Final_Description & "Version Installed: " & document.all.SKU.value & chr(13)
|
|
Final_Description = Final_Description & "Regression: " & document.all.Regression.value & chr(13)
|
|
Final_Description = Final_Description & "Upgrade From: " & document.all.upgrade.value & chr(13)
|
|
Final_Description = Final_Description & "=======================================================================" & chr(13)
|
|
Final_Description = Final_Description & document.all("Description").value
|
|
|
|
|
|
if document.all.BetaID.value <> "" then
|
|
oInc.UserName = document.all.BetaID.value
|
|
else
|
|
oInc.UserName = 999999 'MAGIC NUMBER (IF they don't have a betaid, use 999999)
|
|
end if
|
|
|
|
|
|
oInc.ProductID = "Whistler Beta Bug"
|
|
oInc.ProductName = "Whistler"
|
|
oInc.ProblemDescription = Final_Description
|
|
|
|
'
|
|
' Get data stream if data collection did not fail
|
|
'
|
|
on error resume next
|
|
if iDCFailed = False then
|
|
'
|
|
' If incident stream exists then get MachineSnapshot else do not
|
|
' and just continue as data collection has already failed and we
|
|
' have to just continue
|
|
'
|
|
fDataValid = IsMachineDataValid(g_oDc)
|
|
fHistoryValid = IsHistoryDataValid(g_oDc)
|
|
|
|
if fDataValid then
|
|
oInc.MachineSnapshot = g_oDc.MachineData_GetStream
|
|
if document.all.CollectOk.checked then
|
|
if fHistoryValid then
|
|
oInc.MachineHistory = g_oDc.History_GetStream
|
|
else
|
|
Call BRP_SetStatusMessage(L_GetDataFailedHS_ErrorMessage)
|
|
iDCFailed = True
|
|
end if
|
|
end if
|
|
else
|
|
Call BRP_SetStatusMessage(L_GetDataFailedSS_ErrorMessage)
|
|
iDCFailed = True
|
|
end if
|
|
end if
|
|
|
|
oInc.UploadType = 0
|
|
|
|
Set oDict = oInc.Misc
|
|
|
|
if document.all.BetaID.value <> "" then
|
|
oDict.add "betaid", document.all.BetaID.value
|
|
else
|
|
oDict.add "betaid", "999999" 'MAGIC NUMBER (IF they don't have a betaid, use 999999)
|
|
end if
|
|
|
|
while misc_fields <> ""
|
|
colon = instr(misc_fields, ":")
|
|
if (colon <> 0) then
|
|
field = left(misc_fields, colon-1)
|
|
misc_fields = right(misc_fields, len(misc_fields) - colon)
|
|
else
|
|
field = misc_fields
|
|
misc_fields = ""
|
|
end if
|
|
if len(field) > 0 then
|
|
oDict.add field, document.all(field).value
|
|
end if
|
|
wend
|
|
|
|
'
|
|
' Change for CollectOk flag
|
|
'
|
|
if document.all.CollectOk.checked then
|
|
oDict.add "CollectOK", "on"
|
|
else
|
|
oDict.add "CollectOK", "off"
|
|
end if
|
|
oDict.add "EmailAddr", document.all("Emailaddr").value
|
|
oDict.add "AdditionalFiles_Number", document.all.AdditionalFilesScroll_List_UL.childNodes.length
|
|
oDict.add "MachineID", g_oUpl.Sig
|
|
|
|
if document.all.CollectOk.checked then
|
|
oDict.add "DCStatus", iDCFailed
|
|
else
|
|
oDict.add "DCStatus", "0"
|
|
end if
|
|
|
|
Err.Clear
|
|
Set oSysInfo = CreateObject("PCHealth.BugRepSysInfo")
|
|
if Err.number <> 0 then
|
|
Err.Clear
|
|
oDict.add "OSBuildNumber", "Unknown"
|
|
oDict.add "OSLanguage", "0"
|
|
oDict.add "OSUserLocalLCID", "0"
|
|
oDict.add "OSSysACP", "0"
|
|
else
|
|
oDict.add "OSBuildNumber", oSysInfo.GetOSVersionString
|
|
oDict.add "OSLanguage", oSysInfo.GetLanguageID
|
|
oDict.add "OSUserLocalLCID", oSysInfo.GetUserDefaultLCID
|
|
oDict.add "OSSysACP", oSysInfo.GetActiveCP
|
|
end if
|
|
|
|
'
|
|
' Add bug reporting page version
|
|
'
|
|
oDict.add "BRP_Version", L_BRP_Version & L_BRPBuild_Version
|
|
|
|
CreateIncident = true
|
|
|
|
end function
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub upl_onProgressChange(UploadJobPtr, currentSize, totalSize)
|
|
|
|
const L_BytesSent1_Text = " ( "
|
|
const L_BytesSent2_Text = " bytes of "
|
|
const L_BytesSent3_Text = " bytes sent )"
|
|
|
|
if totalSize = 0 then
|
|
' Avoid divide-by-zero errors.
|
|
totalSize = 100
|
|
end if
|
|
|
|
Call SetProgress(Round(currentSize / totalSize * 100))
|
|
|
|
Call BRP_AppendProgressMessage(L_BytesSent1_Text & currentSize & _
|
|
L_BytesSent2_Text & totalSize & _
|
|
L_BytesSent3_Text)
|
|
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub upl_onStatusChange(UploadJobPtr, status)
|
|
|
|
Dim stat_str, szTrackingNo, szTrackingTime
|
|
|
|
const L_Upload_STATUS_NotActive_Message = "Not active"
|
|
const L_Upload_STATUS_Active_Message = "Active"
|
|
const L_Upload_STATUS_Suspended_Message = "Suspended"
|
|
const L_Upload_STATUS_Transmitting_Message = "Transmitting"
|
|
const L_Upload_STATUS_Aborted_ErrorMessage = "Retrying upload"
|
|
const L_Upload_STATUS_Failed_ErrorMessage = "Failed due to server error."
|
|
const L_Upload_STATUS_Completed_Message = "Completed upload"
|
|
const L_Upload_STATUS_Deleted_Message = "Deleted"
|
|
const L_UploadError_ErrorMessage = "The following error occurred during upload: "
|
|
const L_UploadErrorCode_ErrorMessage = "Error : "
|
|
const L_UploadErrorNoErrNum_ErrorMessage = "There was an error uploading your bug report."
|
|
const L_SubmitToRety_ErrorMessage = "Click submit to retry."
|
|
|
|
select case status
|
|
case UL_NOTACTIVE stat_str=L_Upload_STATUS_NotActive_Message
|
|
case UL_ACTIVE stat_str=L_Upload_STATUS_Active_Message
|
|
case UL_SUSPENDED stat_str=L_Upload_STATUS_Suspended_Message
|
|
case UL_TRANSMITTING stat_str=L_Upload_STATUS_Transmitting_Message
|
|
case UL_ABORTED stat_str=L_Upload_STATUS_Aborted_ErrorMessage
|
|
case UL_FAILED stat_str=L_Upload_STATUS_Failed_ErrorMessage
|
|
case UL_COMPLETED stat_str=L_Upload_STATUS_Completed_Message
|
|
case UL_DELETED stat_str=L_Upload_STATUS_Deleted_Message
|
|
end select
|
|
|
|
Call BRP_SetStatusMessage(stat_str)
|
|
|
|
if status = UL_FAILED or status = UL_COMPLETED then
|
|
Call UnregisterUPLHandlers()
|
|
if status = UL_COMPLETED then
|
|
'
|
|
' Successfully submitted an incident
|
|
'
|
|
g_bSubmitIncidentSucceeded = TRUE
|
|
'
|
|
' No cleanup requird here as a seperate thankyou DIV is being
|
|
' displayed and users cannot navigate back to the page, a
|
|
' cleanup here adds some flicker before the thankyou page
|
|
'
|
|
szTrackingNo = g_oUpl.Sig & "_" & g_oUpl.JobID
|
|
szTrackingTime = g_oUpl.CompleteTime
|
|
Call BRP_TraceMessage(szTrackingTime)
|
|
Call BRP_TraceMessage(szTrackingNo)
|
|
|
|
'
|
|
' Make a record of the incident
|
|
'
|
|
Call RecordIncident(szTrackingTime,szTrackingNo)
|
|
|
|
'
|
|
' Store valid options
|
|
'
|
|
Call BRP_WriteIniFile()
|
|
|
|
document.all.BRP_IncidentTime.innerHTML = szTrackingTime
|
|
document.all.BRP_TrackingNo.innerHTML = szTrackingNo
|
|
|
|
Call BRP_CleanCrashDump()
|
|
|
|
end if
|
|
'
|
|
' Cleanup
|
|
'
|
|
Call BRP_CleanupAfterCancelUpload
|
|
|
|
'
|
|
' Delete the upload object
|
|
'
|
|
g_oUpl.Delete
|
|
|
|
'
|
|
' Move to thank you page, must remove the InProgess before this
|
|
' or the unload handlers will kick in so above code order is
|
|
' important
|
|
'
|
|
if status = UL_COMPLETED then
|
|
document.all.spanEnterBug.style.display = "none"
|
|
document.all.spanThankYou.style.display = ""
|
|
exit sub
|
|
end if
|
|
'
|
|
' Changed to print error code string
|
|
'
|
|
if g_oUpl.ErrorCode <> 0 then
|
|
lErrCode = CLng(g_oUpl.Errorcode)
|
|
szError = ERR_GetJobErrorCodeString(lErrCode)
|
|
BRP_MessageBox L_UploadError_ErrorMessage & vbCrLf & _
|
|
L_UploadErrorCode_ErrorMessage & _
|
|
szError & _
|
|
vbCrLf & _
|
|
L_SubmitToRety_ErrorMessage
|
|
else
|
|
BRP_MessageBox L_UploadErrorNoErrNum_ErrorMessage & _
|
|
L_SubmitToRety_ErrorMessage
|
|
end if
|
|
end if
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub ResetUpload()
|
|
On Error Resume Next
|
|
if not (g_oUpl is Nothing) then
|
|
g_oUpl.Delete
|
|
end if
|
|
Set g_oUpl = Nothing
|
|
if not (g_oDc is Nothing) then
|
|
g_oDc.Abort
|
|
end if
|
|
Set g_oDc = Nothing
|
|
if not (g_oCab is Nothing) then
|
|
g_oCab.Abort
|
|
end if
|
|
Set g_oCab = Nothing
|
|
Call BRP_CleanupAfterCancelUpload()
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub CancelUpload()
|
|
|
|
const L_UserCancel_Message = "Cancelled by user"
|
|
|
|
if g_nInProgress then
|
|
Call UnregisterDCHandlers()
|
|
Call UnregisterUPLHandlers()
|
|
Call UnregisterCabHandler()
|
|
Call BRP_SetStatusMessage(L_UserCancel_Message)
|
|
Call ResetUpload()
|
|
Call SetProgress(0)
|
|
end if
|
|
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub CreateCab(iDCFailed)
|
|
|
|
const L_UploadObjectMissing_ErrorMessage = "An error occurred when trying to create the upload data object."
|
|
const L_FailedIncident_ErrorMessage = "Failed generating incident"
|
|
const L_CantGenerateIncident_ErrorMessage = "There was an error trying to save the incident information."
|
|
const L_CabCompression_ErrorMessage = "An error occurred when trying to compress the CAB file before upload."
|
|
const L_CompressingCab_Message = "Compressing CAB file"
|
|
|
|
Dim oInc, oTmpObj, oFS, oFileSelected, oFolder, oFiles, oFile, oLastLogFile
|
|
Dim FileList(), FileListIndex, AddFilesIndex
|
|
Dim iFileCount, AddFilesCount
|
|
Dim iStart
|
|
Dim nCount, dCurDate, dMaxDate, fIsLog
|
|
Dim iMaxSysRootFiles, szSysRootFileName()
|
|
Dim iMaxSysDriveFiles, szSysDriveFileName()
|
|
Dim iMaxCDriveFiles, szCDriveFileName()
|
|
Dim szText
|
|
ReDim FileList(500)
|
|
ReDim szSysRootFileName(20)
|
|
ReDim szSysDriveFileName(20)
|
|
ReDim szCDriveFileName(20)
|
|
|
|
AddFilesCount = 0
|
|
|
|
Call BRP_TraceMessage("CreateCAB")
|
|
|
|
on error resume next
|
|
Err.Clear
|
|
Set oTmpObj = CreateObject("UploadManager.MPCUpload")
|
|
'
|
|
' Error handler for bad MPCUpload object (missing config.xml)
|
|
'
|
|
if Err.number <> 0 then
|
|
Call BRP_MessageBox(L_UploadObjectMissing_ErrorMessage)
|
|
Call BRP_CleanupAfterCancelUpload()
|
|
exit sub
|
|
end if
|
|
|
|
if Not (g_oUpl is Nothing) then
|
|
set g_oUpl = Nothing
|
|
end if
|
|
Set g_oUpl = oTmpObj.CreateJob
|
|
g_oUpl.Sig = ""
|
|
|
|
if NOT CreateIncident(oInc, iDCFailed) then
|
|
g_oUpl.Delete
|
|
exit sub
|
|
end if
|
|
|
|
Err.Clear
|
|
oInc.GetXML GetTempPath & "\Incident.XML"
|
|
if Err.number <> 0 then
|
|
Err.Clear
|
|
Call BRP_SetStatusMessage(L_FailedIncident_ErrorMessage)
|
|
Call BRP_MessageBox(L_CantGenerateIncident_ErrorMessage)
|
|
Call BRP_CleanupAfterCancelUpload()
|
|
end if
|
|
|
|
Set oFS = CreateObject("Scripting.FileSystemObject")
|
|
|
|
iFileCount = 0
|
|
if oFS.FileExists( GetTempPath & "\Incident.XML" ) then
|
|
FileList(iFileCount) = GetTempPath & "\Incident.XML"
|
|
iFileCount = iFileCount + 1
|
|
end if
|
|
'
|
|
' Collect hcupdate.log
|
|
'
|
|
if oFS.FileExists( GetWinPath & "\temp\hcupdate.log" ) then
|
|
FileList(iFileCount) = GetWinPath & "\temp\hcupdate.log"
|
|
iFileCount = iFileCount + 1
|
|
end if
|
|
'
|
|
' Add XML files to upload
|
|
'
|
|
if oFS.FileExists( GetVendorPath & "\bug_upload_collect.XML" ) then
|
|
FileList(iFileCount) = GetVendorPath & "\bug_upload_collect.XML"
|
|
iFileCount = iFileCount + 1
|
|
end if
|
|
if oFS.FileExists( GetVendorPath & "\bug_upload_nocollect.XML" ) then
|
|
FileList(iFileCount) = GetVendorPath & "\bug_upload_nocollect.XML"
|
|
iFileCount = iFileCount + 1
|
|
end if
|
|
|
|
'
|
|
' Get files from the SYSTEMROOT (Windows) directory
|
|
'
|
|
|
|
szSysRootFileName(01) = "\ntbtlog.txt"
|
|
szSysRootFileName(02) = "\setupact.log"
|
|
szSysRootFileName(03) = "\setupapi.log"
|
|
szSysRootFileName(04) = "\setuperr.log"
|
|
szSysRootFileName(05) = "\setuplog.txt"
|
|
szSysRootFileName(06) = "\PCHealth\HelpCtr\Config\DataSpec.XML"
|
|
szSysRootFileName(07) = "\repair\setup.log"
|
|
szSysRootFileName(08) = "\system\sfp\sfplog.txt"
|
|
szSysRootFileName(09) = "\system32\autoexec.nt"
|
|
szSysRootFileName(10) = "\system32\config\appevent.evt"
|
|
szSysRootFileName(11) = "\system32\config\secevent.evt"
|
|
szSysRootFileName(12) = "\system32\config\sysevent.evt"
|
|
szSysRootFileName(13) = "\debug\UserMode\userenv.log"
|
|
szSysRootFileName(14) = "\debug\NetSetup.log"
|
|
szSysRootFileName(15) = "\debug\dcpromo.log"
|
|
szSysRootFileName(16) = "\ntcompat.txt"
|
|
szSysRootFileName(17) = "\upgrade.txt"
|
|
szSysRootFileName(18) = "\system32\$winnt$.inf"
|
|
|
|
|
|
iMaxSysRootFiles = 19
|
|
|
|
for iCount = 0 to iMaxSysRootFiles-1
|
|
if oFS.FileExists( GetSystemRootPath & szSysRootFileName(iCount) ) then
|
|
FileList(iFileCount) = GetSystemRootPath & szSysRootFileName(iCount)
|
|
iFileCount = iFileCount + 1
|
|
end if
|
|
next
|
|
|
|
'
|
|
' Get files from the SYSTEMDRIVE directory
|
|
'
|
|
szSysDriveFileName(00) = "\boot.ini"
|
|
szSysDriveFileName(01) = "\bootex.log"
|
|
szSysDriveFileName(02) = "\sysparse.log"
|
|
|
|
|
|
|
|
iMaxSysDriveFiles = 3
|
|
|
|
for iCount = 0 to iMaxSysDriveFiles-1
|
|
if oFS.FileExists( GetSystemDrivePath & szSysDriveFileName(iCount) ) then
|
|
FileList(iFileCount) = GetSystemDrivePath & szSysDriveFileName(iCount)
|
|
iFileCount = iFileCount + 1
|
|
end if
|
|
next
|
|
|
|
'
|
|
' Get files from the WMI LOG directory log files
|
|
'
|
|
if oFS.FolderExists(GetWinSystemPath & "\wbem\logs") then
|
|
Set oFolder = oFS.GetFolder(GetWinSystemPath & "\wbem\logs")
|
|
Set oFiles = oFolder.Files
|
|
for Each oFile in oFiles
|
|
fIsLog = instrrev(lcase(oFile.name), ".log")
|
|
if fIsLog <> 0 then
|
|
if oFS.FileExists( oFile.Path ) then
|
|
FileList(iFileCount) = oFile.Path
|
|
iFileCount = iFileCount + 1
|
|
end if
|
|
end if
|
|
next
|
|
end if
|
|
|
|
'
|
|
' Run DirectX diagnostic utility and collect this information
|
|
'
|
|
'Call RunExternalApplicationDxDiag()
|
|
'if oFS.FileExists( GetTempPath & "\dxdiag.txt" ) then
|
|
' FileList(iFileCount) = GetTempPath & "\dxdiag.txt"
|
|
' iFileCount = iFileCount + 1
|
|
'end if
|
|
|
|
FileListIndex = iFileCount
|
|
|
|
'
|
|
' Find number of selected files and add them to the list
|
|
' they exist at the time of selection so not re-checking them
|
|
'
|
|
Set oFileSelected = document.all.AdditionalFilesScroll_List_UL.childNodes
|
|
|
|
|
|
AddFilesCount = oFileSelected.length
|
|
|
|
ReDim Preserve FileList(FileListIndex + AddFilesCount - 1)
|
|
for AddFilesIndex = 0 to (AddFilesCount - 1)
|
|
FileList(FileListIndex) = oFileSelected.item(AddFilesIndex).innerText
|
|
FileListIndex = FileListIndex + 1
|
|
next
|
|
|
|
if Not (g_oCab is Nothing) then
|
|
set g_oCab = Nothing
|
|
end if
|
|
|
|
Set g_oCab = pchealth.CreateObject_Cabinet
|
|
for AddFilesIndex = 0 to (FileListIndex-1)
|
|
g_oCab.AddFile FileList(AddFilesIndex)
|
|
document.all.ProgressText.innerHTML = "Collecting " & FileList(AddFilesIndex)
|
|
next
|
|
document.all.ProgressText.innerHTML = " "
|
|
|
|
'
|
|
' Register cab completion call back
|
|
'
|
|
RegisterCabHandler
|
|
|
|
Call BRP_TraceMessage("Compressing cab")
|
|
|
|
Call BRP_SetStatusMessage(L_CompressingCab_Message)
|
|
|
|
Err.Clear
|
|
|
|
g_oCab.Compress GetTempPath & "\Upload.CAB"
|
|
|
|
'
|
|
' Error trapping for problems during compression
|
|
'
|
|
if Err.number <> 0 then
|
|
Call UnregisterCabHandler()
|
|
Call BRP_MessageBox(L_CabCompression_ErrorMessage)
|
|
Call BRP_CleanupAfterCancelUpload()
|
|
exit sub
|
|
end if
|
|
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub ContinueSaveIncident()
|
|
|
|
const L_SavingIncident_Message = "Saving incident to "
|
|
const L_IncidentSaved_Message = "Incident saved to "
|
|
const L_SaveFailed_ErrorMessage = "Couldn't save incident to "
|
|
const L_CantSaveFile_ErrorMessage = "Can't save incident. Make sure the path is valid and there is free space on the drive."
|
|
const L_SavingFinished_Message = " - File saved"
|
|
|
|
Dim oTmpObj, oFS
|
|
Dim szCabFileName
|
|
|
|
Err.Clear
|
|
|
|
Call BRP_TraceMessage("ContinueSaveIncident")
|
|
|
|
if g_bSaveIncident = False then
|
|
exit sub
|
|
end if
|
|
|
|
if g_bSubmitIncident = False then
|
|
g_oUpl.Delete
|
|
end if
|
|
|
|
Call BRP_SetStatusMessage(L_SavingIncident_Message & document.all.IncidentFilename.value)
|
|
|
|
if g_bSubmitIncident = False then
|
|
Call SetProgress(0)
|
|
end if
|
|
|
|
Set oFS = CreateObject("Scripting.FileSystemObject")
|
|
on error resume next
|
|
|
|
szCabFileName = document.all.IncidentFilename.value
|
|
|
|
oFS.CopyFile GetTempPath & "\Upload.CAB", szCabFileName
|
|
if err.number <> 0 then
|
|
Call BRP_SetStatusMessage(L_SaveFailed_ErrorMessage & document.all.IncidentFilename.value)
|
|
Call BRP_MessageBox(L_CantSaveFile_ErrorMessage)
|
|
'
|
|
' If submitting is not going to happen after this, clean up the buttons
|
|
'
|
|
if g_bSubmitIncident = False then
|
|
Call BRP_CleanupAfterCancelUpload()
|
|
end if
|
|
exit sub
|
|
end if
|
|
'
|
|
' save succeeded
|
|
'
|
|
g_bSaveIncidentSucceeded = TRUE
|
|
|
|
Call BRP_SetStatusMessage(L_IncidentSaved_Message & document.all.IncidentFilename.value)
|
|
|
|
'
|
|
' If submitting is not going to happen after this, clean up the buttons
|
|
'
|
|
if g_bSubmitIncident = False then
|
|
|
|
Call SetProgress(100)
|
|
Call BRP_AppendProgressMessage(L_SavingFinished_Message)
|
|
|
|
Call BRP_CleanCrashDump()
|
|
|
|
'
|
|
' Make a record of the incident
|
|
'
|
|
Call RecordIncident(Now(),"-")
|
|
|
|
'
|
|
' Store valid options
|
|
'
|
|
Call BRP_WriteIniFile()
|
|
|
|
Call BRP_CleanupAfterCancelUpload()
|
|
|
|
end if
|
|
|
|
|
|
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub ContinueUploadIncident()
|
|
|
|
const L_UploadCab_ErrorMessage = "An error occurred when trying to use the upload CAB file."
|
|
const L_UploadStart_ErrorMessage = "An error occurred when trying to start upload."
|
|
|
|
Dim oTmpObj, oInc, oFS
|
|
|
|
'
|
|
' Alway trap all errors in the code
|
|
'
|
|
on error resume next
|
|
Err.Clear
|
|
|
|
Call BRP_TraceMessage("ContinueUploadIncident")
|
|
|
|
if g_bSubmitIncident = False then
|
|
exit sub
|
|
end if
|
|
|
|
if BRP_DebugFlag >= 1 then
|
|
g_oUpl.Server = L_ServerNameTest_Address
|
|
else
|
|
g_oUpl.Server = L_ServerName_Address
|
|
end if
|
|
|
|
g_oUpl.ProviderID = "ESC"
|
|
g_oUpl.Mode = UL_FOREGROUND
|
|
g_oUpl.PersistToDisk = False
|
|
|
|
'
|
|
' CAB file is already in a compressed state so further compression
|
|
' is not required (Fixes Bug 102646)
|
|
'
|
|
g_oUpl.Compressed = False
|
|
g_oUpl.History = UL_HISTORY_NONE
|
|
'
|
|
' We need to zero out the progress indicator, since the Upload object
|
|
' doesn't always do this (for example, if it aborts immediatly).
|
|
'
|
|
upl_onProgressChange g_oUpl, 0, 100
|
|
|
|
Call RegisterUPLHandlers()
|
|
|
|
Call BRP_TraceMessage("Get Data from Upload.CAB file")
|
|
|
|
g_oUpl.GetDataFromFile GetTempPath & "\Upload.CAB"
|
|
'
|
|
' Error trapping for invalid parameters has to be carried out here
|
|
' with proper error code message
|
|
'
|
|
if Err.number <> 0 then
|
|
Call BRP_MessageBox(L_UploadCab_ErrorMessage )
|
|
Call BRP_CleanupAfterCancelUpload()
|
|
exit sub
|
|
end if
|
|
|
|
Call BRP_TraceMessage("Start uploading")
|
|
|
|
Err.Clear
|
|
g_oUpl.ActivateASync
|
|
'
|
|
' Error trapping for invalid parameters has to be carried out here
|
|
' with proper error code message
|
|
'
|
|
if Err.number <> 0 then
|
|
Call BRP_MessageBox(L_UploadStart_ErrorMessage)
|
|
Call BRP_CleanupAfterCancelUpload()
|
|
exit sub
|
|
end if
|
|
end sub
|
|
|
|
Function ReadAllTextFile(szFileName)
|
|
Const ForReading = 1, ForWriting = 2
|
|
Dim oFS, oFile
|
|
Set oFS = CreateObject("Scripting.FileSystemObject")
|
|
Set oFile = oFS.OpenTextFile(szFileName, ForReading)
|
|
ReadAllTextFile = oFile.ReadAll
|
|
oFile.Close
|
|
End Function
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub RecordIncident(szTrackingTime,szTrackingNo)
|
|
|
|
const L_IncidentDir_FileName = "\incidents"
|
|
const L_IncHead_FileName = "\inc_head.htm"
|
|
const L_IncTail_FileName = "\inc_tail.htm"
|
|
const L_Saved_Message = "Saved"
|
|
const L_Submitted_Message = "Submitted"
|
|
const L_BugReport_Message = "Bug Report"
|
|
const L_ActionsTaken_Message = "Actions taken"
|
|
const L_AddFiles_Message = "Additional Files"
|
|
const L_SubmitTime_Message = "Submit Time"
|
|
const L_TrackingNumber_Message = "Tracking Number"
|
|
const L_SavedFile_Message = "Saved File"
|
|
const L_CSVFileName_Message = "CSV File"
|
|
const L_RecordIncident_ErrorMessage = "An error occurred when recording the incident on the computer."
|
|
|
|
Dim oFS, oChannel, oDataFile
|
|
Dim bFileOK
|
|
Dim nAddFiles
|
|
Dim szIncidentAction
|
|
|
|
|
|
|
|
|
|
on error resume next
|
|
|
|
if g_bSubmitIncidentSucceeded = FALSE AND g_bSaveIncidentSucceeded = FALSE then
|
|
'
|
|
' no need to record an incident
|
|
'
|
|
exit sub
|
|
end if
|
|
|
|
Err.number = 0
|
|
Err.Clear
|
|
|
|
bFileOK = True
|
|
|
|
Set oFS = CreateObject("Scripting.FileSystemObject")
|
|
if Err.number <> 0 then
|
|
Call BRP_MessageBox(L_RecordIncident_ErrorMessage)
|
|
exit sub
|
|
end if
|
|
|
|
'
|
|
' Create an incidents folder
|
|
'
|
|
if ( oFS.FolderExists( GetVendorPath & L_IncidentDir_FileName )) then
|
|
|
|
else
|
|
oFS.CreateFolder( GetVendorPath & L_IncidentDir_FileName )
|
|
end if
|
|
|
|
if Err.number <> 0 then
|
|
Call BRP_MessageBox(L_RecordIncident_ErrorMessage)
|
|
exit sub
|
|
end if
|
|
|
|
'
|
|
' Find a unique file name based on number for the HTML file
|
|
'
|
|
nCount = 1
|
|
NewFile = False
|
|
Do
|
|
szFile = nCount & ".htm"
|
|
szFileName = GetVendorPath & L_IncidentDir_FileName & "\" & szFile
|
|
szCSV_File = nCount & ".csv"
|
|
szCSV_FileName = GetVendorPath & L_IncidentDir_FileName & "\" & szCSV_File
|
|
if oFS.FileExists(szFileName) OR oFS.FileExists(szCSV_FileName) then
|
|
nCount = nCount + 1
|
|
else
|
|
NewFile = True
|
|
end if
|
|
Loop While NewFile = False
|
|
|
|
if Err.number <> 0 then
|
|
Call BRP_MessageBox(L_RecordIncident_ErrorMessage)
|
|
exit sub
|
|
end if
|
|
|
|
szIncidentAction = " "
|
|
if g_bSaveIncidentSucceeded = True then
|
|
szIncidentAction = szIncidentAction & L_Saved_Message
|
|
if g_bSubmitIncidentSucceeded = True then
|
|
szIncidentAction = szIncidentAction & " "
|
|
end if
|
|
end if
|
|
if g_bSubmitIncidentSucceeded = True then
|
|
szIncidentAction = szIncidentAction & L_Submitted_Message
|
|
end if
|
|
|
|
'
|
|
' Create CSV data file
|
|
'
|
|
Err.Clear
|
|
Set oDataFile = oFS.CreateTextFile(szCSV_FileName, False)
|
|
|
|
if Err.number <> 0 then
|
|
Call BRP_MessageBox(L_RecordIncident_ErrorMessage)
|
|
exit sub
|
|
end if
|
|
|
|
szEscaped = replaceQuotes(Cstr(szTrackingTime))
|
|
oDataFile.Write chr(34) & szEscaped & chr(34) & ","
|
|
|
|
szEscaped = replaceQuotes(szTrackingNo)
|
|
oDataFile.Write chr(34) & szEscaped & chr(34) & ","
|
|
|
|
if g_bSaveIncident = True then
|
|
szEscaped = replaceQuotes(document.all.IncidentFilename.value)
|
|
oDataFile.Write chr(34) & szEscaped & chr(34) & ","
|
|
end if
|
|
|
|
szEscaped = replaceQuotes(szCSV_FileName)
|
|
oDataFile.Write chr(34) & szEscaped & chr(34) & ","
|
|
|
|
szEscaped = replaceQuotes(szIncidentAction)
|
|
oDataFile.Write chr(34) & szEscaped & chr(34) & ","
|
|
|
|
'Prep the description with addtional information (SKU, regression, upgrade information)
|
|
|
|
dim Final_Description
|
|
Final_Description = ""
|
|
Final_Description = Final_Description & "Version Installed: " & document.all.SKU.value & chr(13)
|
|
Final_Description = Final_Description & "Regression: " & document.all.Regression.value & chr(13)
|
|
Final_Description = Final_Description & "Upgrade From: " & document.all.upgrade.value & chr(13)
|
|
Final_Description = Final_Description & "=======================================================================" & chr(13)
|
|
Final_Description = Final_Description & document.all("Description").value
|
|
|
|
|
|
|
|
misc_fields = "BetaID:Emailaddr:Title:Severity:Area:Reproducibility:Description:ExpectedBehavior:StepsToRepro"
|
|
|
|
while misc_fields <> ""
|
|
colon = instr(misc_fields, ":")
|
|
if (colon <> 0) then
|
|
field = left(misc_fields, colon-1)
|
|
misc_fields = right(misc_fields, len(misc_fields) - colon)
|
|
else
|
|
field = misc_fields
|
|
misc_fields = ""
|
|
end if
|
|
if len(field) > 0 then
|
|
if (field = "Description") then
|
|
szEscaped = replaceQuotes(Final_Description)
|
|
else
|
|
szEscaped = replaceQuotes(document.all(field).value)
|
|
end if
|
|
oDataFile.Write chr(34) & szEscaped & chr(34) & ","
|
|
end if
|
|
wend
|
|
|
|
nAddFiles = document.all.AdditionalFilesScroll_List_UL.childNodes.length
|
|
szEscaped = replaceQuotes(Cstr(nAddFiles))
|
|
oDataFile.Write chr(34) & szEscaped & chr(34)
|
|
|
|
oDataFile.Close
|
|
|
|
|
|
if Err.number <> 0 then
|
|
Call BRP_MessageBox(L_RecordIncident_ErrorMessage)
|
|
exit sub
|
|
end if
|
|
|
|
'
|
|
' Create HTML data file
|
|
'
|
|
Set oDataFile = oFS.CreateTextFile(szFileName, False)
|
|
|
|
if Err.number <> 0 then
|
|
Call BRP_MessageBox(L_RecordIncident_ErrorMessage)
|
|
exit sub
|
|
end if
|
|
|
|
if ( oFS.FileExists( GetVendorPath & L_IncHead_FileName )) then
|
|
szHeadString = ReadAllTextFile( GetVendorPath & L_IncHead_FileName )
|
|
oDataFile.Write szHeadString
|
|
end if
|
|
|
|
|
|
oDataFile.Write "<TR>"
|
|
oDataFile.Write "<TD>"
|
|
oDataFile.Write "<TABLE border=0>"
|
|
oDataFile.Write "<TBODY>"
|
|
oDataFile.Write " <TR>"
|
|
oDataFile.Write " <TD valign=top><B>" & L_SubmitTime_Message & "</B></TD>"
|
|
oDataFile.Write " <TD>" & szTrackingTime & "</TD>"
|
|
oDataFile.Write " </TR><TR><TD COLSPAN=2><HR></TD></TR>"
|
|
oDataFile.Write " <TR>"
|
|
oDataFile.Write " <TD valign=top><B>" & L_TrackingNumber_Message & "</B></TD>"
|
|
oDataFile.Write " <TD>" & szTrackingNo & "</TD>"
|
|
oDataFile.Write " </TR><TR><TD COLSPAN=2><HR></TD></TR>"
|
|
|
|
if g_bSaveIncident = True then
|
|
oDataFile.Write " <TR>"
|
|
oDataFile.Write " <TD valign=top><B>" & L_SavedFile_Message & "</B></TD>"
|
|
oDataFile.Write " <TD>" & document.all.IncidentFilename.value & "</TD>"
|
|
oDataFile.Write " </TR><TR><TD COLSPAN=2><HR></TD></TR>"
|
|
end if
|
|
|
|
oDataFile.Write " <TR>"
|
|
oDataFile.Write " <TD valign=top><B>" & L_CSVFileName_Message & "</B></TD>"
|
|
oDataFile.Write " <TD>" & szCSV_FileName & "</TD>"
|
|
oDataFile.Write " </TR><TR><TD COLSPAN=2><HR></TD></TR>"
|
|
|
|
szIncidentAction = " "
|
|
if g_bSaveIncidentSucceeded = True then
|
|
szIncidentAction = szIncidentAction & L_Saved_Message
|
|
if g_bSubmitIncidentSucceeded = True then
|
|
szIncidentAction = szIncidentAction & " "
|
|
end if
|
|
end if
|
|
if g_bSubmitIncidentSucceeded = True then
|
|
szIncidentAction = szIncidentAction & L_Submitted_Message
|
|
end if
|
|
|
|
oDataFile.Write " <TR>"
|
|
oDataFile.Write " <TD valign=top><B>" & L_ActionsTaken_Message & "</B></TD>"
|
|
oDataFile.Write " <TD>" & szIncidentAction & "</TD>"
|
|
oDataFile.Write " </TR><TR><TD COLSPAN=2><HR></TD></TR>"
|
|
|
|
misc_fields = "BetaID:Emailaddr:Title:Severity:Area:Reproducibility"
|
|
|
|
|
|
oDataFile.Write " <TR>"
|
|
oDataFile.Write " <TD valign=top><B>" & L_FormField_FIELDNAME_BetaID_TEXT & "</B></TD>"
|
|
oDataFile.Write " <TD>" & document.all("BetaID").value & "</TD>"
|
|
oDataFile.Write " </TR><TR><TD COLSPAN=2><HR></TD></TR>"
|
|
|
|
oDataFile.Write " <TR>"
|
|
oDataFile.Write " <TD valign=top><B>" & L_FormField_FIELDNAME_Emailaddr_TEXT & "</B></TD>"
|
|
oDataFile.Write " <TD>" & document.all("Emailaddr").value & "</TD>"
|
|
oDataFile.Write " </TR><TR><TD COLSPAN=2><HR></TD></TR>"
|
|
|
|
oDataFile.Write " <TR>"
|
|
oDataFile.Write " <TD valign=top><B>" & L_FormField_FIELDNAME_Title_TEXT & "</B></TD>"
|
|
oDataFile.Write " <TD>" & escapeHTMLTag(document.all("Title").value) & "</TD>"
|
|
oDataFile.Write " </TR><TR><TD COLSPAN=2><HR></TD></TR>"
|
|
|
|
oDataFile.Write " <TR>"
|
|
oDataFile.Write " <TD valign=top><B>" & L_FormField_FIELDNAME_Severity_TEXT & "</B></TD>"
|
|
oDataFile.Write " <TD>" & escapeHTMLTag(document.all("Severity").options(document.all("Severity").selectedIndex).text) & "</TD>"
|
|
oDataFile.Write " </TR><TR><TD COLSPAN=2><HR></TD></TR>"
|
|
|
|
oDataFile.Write " <TR>"
|
|
oDataFile.Write " <TD valign=top><B>" & L_FormField_FIELDNAME_Area_TEXT & "</B></TD>"
|
|
oDataFile.Write " <TD>" & escapeHTMLTag(document.all("Area").options(document.all("Area").selectedIndex).text) & "</TD>"
|
|
oDataFile.Write " </TR><TR><TD COLSPAN=2><HR></TD></TR>"
|
|
|
|
oDataFile.Write " <TR>"
|
|
oDataFile.Write " <TD valign=top><B>" & L_FormField_FIELDNAME_Reproducibility_TEXT & "</B></TD>"
|
|
oDataFile.Write " <TD>" & document.all("Reproducibility").options(document.all("Reproducibility").selectedIndex).text & "</TD>"
|
|
oDataFile.Write " </TR><TR><TD COLSPAN=2><HR></TD></TR>"
|
|
|
|
misc_fields = "Description:ExpectedBehavior:StepsToRepro"
|
|
|
|
'Use the Final_Description we built up above.
|
|
|
|
oDataFile.Write " <TR>"
|
|
oDataFile.Write " <TD valign=top><B>" & L_FormField_FIELDNAME_Description_TEXT & "</B></TD>"
|
|
oDataFile.Write " <TD>" & escapeHTMLTag(Final_Description) & "</TD>"
|
|
oDataFile.Write " </TR><TR><TD COLSPAN=2><HR></TD></TR>"
|
|
|
|
oDataFile.Write " <TR>"
|
|
oDataFile.Write " <TD valign=top><B>" & L_FormField_FIELDNAME_Expected_TEXT & "</B></TD>"
|
|
oDataFile.Write " <TD>" & escapeHTMLTag(document.all("ExpectedBehavior").value) & "</TD>"
|
|
oDataFile.Write " </TR><TR><TD COLSPAN=2><HR></TD></TR>"
|
|
|
|
oDataFile.Write " <TR>"
|
|
oDataFile.Write " <TD valign=top><B>" & L_FormField_FIELDNAME_Repro_TEXT & "</B></TD>"
|
|
oDataFile.Write " <TD>" & escapeHTMLTag(document.all("StepsToRepro").value) & "</TD>"
|
|
oDataFile.Write " </TR><TR><TD COLSPAN=2><HR></TD></TR>"
|
|
|
|
|
|
|
|
'
|
|
' Find number of selected files and add them to the list
|
|
' they exist at the time of selection so not re-checking them
|
|
'
|
|
nAddFiles = document.all.AdditionalFilesScroll_List_UL.childNodes.length
|
|
|
|
|
|
if nAddFiles > 0 then
|
|
szFileList = " "
|
|
for nCount = 0 to (nAddFiles - 1)
|
|
szFileList = szFileList & document.all.AdditionalFilesScroll_List_UL.childNodes.item(nCount).innerText & "<BR>"
|
|
next
|
|
|
|
oDataFile.Write " <TR>"
|
|
oDataFile.Write " <TD valign=top><B>" & L_AddFiles_Message & "</B></TD>"
|
|
oDataFile.Write " <TD>" & szFileList & "</TD>"
|
|
oDataFile.Write " </TR>"
|
|
|
|
end if
|
|
|
|
oDataFile.Write " </TBODY>"
|
|
oDataFile.Write" </TABLE>"
|
|
oDataFile.Write" </TD>"
|
|
oDataFile.Write" </TR>"
|
|
oDataFile.Write" </TBODY>"
|
|
oDataFile.Write"</TABLE>"
|
|
|
|
if ( oFS.FileExists( GetVendorPath & L_IncTail_FileName )) then
|
|
szHeadString = ReadAllTextFile( GetVendorPath & L_IncTail_FileName )
|
|
oDataFile.Write szHeadString
|
|
end if
|
|
|
|
oDataFile.Close
|
|
|
|
if Err.number <> 0 then
|
|
Call BRP_MessageBox(L_RecordIncident_ErrorMessage)
|
|
exit sub
|
|
end if
|
|
|
|
if bFileOK = True then
|
|
Err.number = 0
|
|
Err.Clear
|
|
Set oChannel = pchealth.CreateObject_Channel(L_VendorChannel_Address, L_ProductName_Version)
|
|
szIncidentPath = "hcp://" & L_VendorChannel_Address & L_IncidentDir_FileName & "\" & szFile
|
|
if err.number <> 0 then
|
|
Call BRP_MessageBox(L_RecordIncident_ErrorMessage)
|
|
else
|
|
if Len(szIncidentAction) = 0 then
|
|
szIName = L_BugReport_Message & ": " & document.all.Title.value
|
|
|
|
else
|
|
szIName = L_BugReport_Message & " (" & szIncidentAction & "): " & document.all.Title.value
|
|
end if
|
|
'
|
|
' Number of parameters changed in new RecordIncident
|
|
'
|
|
if g_nCurrentBuild < 2399 then
|
|
oChannel.RecordIncident szIName, szIncidentPath
|
|
else
|
|
oChannel.RecordIncident szIName, szIncidentPath, "", ""
|
|
end if
|
|
end if
|
|
end if
|
|
|
|
end sub
|
|
|
|
const L_NeedFilename_ErrorMessage = "You must specify a filename."
|
|
const L_FileAlreadySelected_ErrorMessage = " has been added already."
|
|
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub StartProcessing()
|
|
|
|
const L_OverwriteFile_TEXT = "The file already exists. Do you want to replace the existing file?"
|
|
const L_InvalidFileName_ErrorMessage = "The file name is invalid. Make sure the path is valid and there are no special characters in the file name."
|
|
const L_SingleSubmit_ErrorMessage = "Only one bug may be submitted at a time."
|
|
const L_NeedAction_ErrorMessage = "Select the option to Submit and/or Save the bug report"
|
|
const L_NoFolder1_ErrorMessage = "The folder "
|
|
const L_NoFolder2_ErrorMessage = " does not exist. Do you want to create it?"
|
|
const L_NoCreateFolder_ErrorMessage = "Could not create the folder. Please select a different folder for the bug report."
|
|
|
|
|
|
Dim oFS ' File System Object
|
|
Dim szCabFileName, szTemp
|
|
Dim slash
|
|
Dim bExist
|
|
|
|
g_bSaveIncident = False
|
|
g_bSaveIncidentSucceeded = False
|
|
g_bSubmitIncident = False
|
|
g_bSubmitIncidentSucceeded = False
|
|
g_bFormValid = False
|
|
|
|
on error resume next
|
|
|
|
if document.all.SaveIncidentNow.checked = False AND document.all.SubmitIncidentNow.checked = False then
|
|
BRP_MessageBox L_NeedAction_ErrorMessage
|
|
exit sub
|
|
end if
|
|
|
|
Call ValidateForm()
|
|
|
|
'
|
|
' Form invalid then exit
|
|
'
|
|
if g_bFormValid = False then
|
|
exit sub
|
|
end if
|
|
|
|
'
|
|
' If we have to save the form do checking for valid file now
|
|
'
|
|
if document.all.SaveIncidentNow.checked then
|
|
|
|
if document.all.IncidentFilename.value = "" Then
|
|
BRP_MessageBox L_NeedFilename_ErrorMessage
|
|
document.all.IncidentFilename.focus
|
|
exit sub
|
|
end if
|
|
Set oFS = CreateObject("Scripting.FileSystemObject")
|
|
|
|
'
|
|
' Check if the folder exists else create it
|
|
'
|
|
szTemp = document.all.IncidentFilename.value
|
|
slash = instrrev(szTemp,"\")
|
|
if slash <> 0 then
|
|
szTemp = left(szTemp,slash-1)
|
|
if NOT oFS.FolderExists( szTemp ) then
|
|
if BRP_Confirm(L_NoFolder1_ErrorMessage & szTemp & L_NoFolder2_ErrorMessage) = vbNo then
|
|
exit sub
|
|
end if
|
|
Err.Clear
|
|
oFS.CreateFolder( szTemp )
|
|
if Err.number <> 0 then
|
|
BRP_MessageBox L_NoCreateFolder_ErrorMessage
|
|
exit sub
|
|
end if
|
|
end if
|
|
end if
|
|
|
|
szCabFileName = document.all.IncidentFilename.value
|
|
Err.Clear
|
|
bExist = oFS.FileExists(szCabFileName)
|
|
if Err.Number <> 0 then
|
|
BRP_MessageBox L_InvalidFileName_ErrorMessage
|
|
exit sub
|
|
end if
|
|
|
|
if bExist then
|
|
if BRP_Confirm(L_OverwriteFile_TEXT) = vbNo then
|
|
exit sub
|
|
end if
|
|
end if
|
|
g_bSaveIncident = True
|
|
end if
|
|
|
|
if document.all.SubmitIncidentNow.checked then
|
|
g_bSubmitIncident = True
|
|
end if
|
|
|
|
'
|
|
' Form is validated, so call UploadIncident
|
|
'
|
|
if g_nInProgress then
|
|
BRP_MessageBox L_SingleSubmit_ErrorMessage
|
|
exit sub
|
|
else
|
|
g_nInProgress = 1
|
|
document.all.Submit.disabled = 1
|
|
document.all.Cancel.disabled = 0
|
|
end if
|
|
|
|
'
|
|
' Disable all fields so they cannot be changed
|
|
'
|
|
document.all.BugReportingInputFieldsTable.style.display = "none"
|
|
document.all.BugReportingHeadingTable.style.cursor = "wait"
|
|
document.all.BugReportingSubmittingTable.style.cursor = "wait"
|
|
document.all.IncidentFilename.disabled = True
|
|
document.all.SubmitIncidentNow.disabled = True
|
|
document.all.SaveIncidentNow.disabled = True
|
|
|
|
|
|
'
|
|
' Start data collection
|
|
'
|
|
Call CollectData()
|
|
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub BRP_CleanupAfterCancelUpload()
|
|
|
|
g_nInProgress = 0
|
|
document.all.Submit.disabled = 0
|
|
document.all.Cancel.disabled = 1
|
|
|
|
'
|
|
' Enable all fields so they cannot be changed
|
|
'
|
|
document.all.BugReportingInputFieldsTable.style.display = ""
|
|
document.all.BugReportingHeadingTable.style.cursor = "auto"
|
|
document.all.BugReportingSubmittingTable.style.cursor = "auto"
|
|
|
|
document.all.IncidentFilename.disabled = False
|
|
document.all.SubmitIncidentNow.disabled = False
|
|
document.all.SaveIncidentNow.disabled = False
|
|
|
|
document.all.Submit.focus
|
|
|
|
end sub
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
function BRP_Working()
|
|
|
|
if g_nInProgress then
|
|
BRP_Working = True
|
|
else
|
|
BRP_Working = False
|
|
end if
|
|
|
|
end function
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
' check if a file exists in the list
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
function AlreadyExist(src, filename)
|
|
|
|
Dim AddFilesCount
|
|
Dim AddFilesIndex
|
|
|
|
AlreadyExist = FALSE
|
|
|
|
AddFilesCount = src.length
|
|
|
|
for AddFilesIndex = 0 to (AddFilesCount - 1)
|
|
if 0 = StrComp(src.Options(AddFilesIndex).text, filename) then
|
|
AlreadyExist = TRUE
|
|
exit for
|
|
end if
|
|
next
|
|
end function
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
' delete an item from the list
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
|
|
function DelListElement2(origin, filename)
|
|
Dim FilesCount
|
|
Dim FilesIndex
|
|
|
|
DelListElement2 = FALSE
|
|
|
|
FilesCount = origin.Options.length
|
|
|
|
if ( 0 = FilesCount ) then
|
|
exit function
|
|
end if
|
|
|
|
for FilesIndex = 0 to (FilesCount - 1)
|
|
if 0 = StrComp(origin.Options(FilesIndex).value, filename) then
|
|
origin.Options.remove(FilesIndex)
|
|
DelListElement2 = TRUE
|
|
exit for
|
|
end if
|
|
next
|
|
end function
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
' add a unique item to the list
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
|
|
function AddListElement2(origin,filename)
|
|
|
|
Dim iFound
|
|
Dim FilesCount
|
|
Dim FilesIndex
|
|
Dim NewOption
|
|
|
|
AddListElement2 = FALSE
|
|
FilesCount = origin.Options.length
|
|
|
|
iFound = FALSE
|
|
|
|
for FilesIndex = 0 to (FilesCount - 1)
|
|
if 0 = StrComp(origin.Options(FilesIndex).value, filename) then
|
|
iFound = TRUE
|
|
exit for
|
|
end if
|
|
next
|
|
|
|
if not iFound then
|
|
set NewOption = document.createElement("OPTION")
|
|
NewOption.text = filename
|
|
NewOption.value = filename
|
|
origin.options.add(NewOption)
|
|
end if
|
|
|
|
end function
|
|
|
|
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
' Add a file to the list
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub BRP_ListAddFileForUpload()
|
|
|
|
Dim oFS ' File System Object
|
|
Dim szFileName
|
|
Dim AddFilesIndex
|
|
Dim fAlreadyExists
|
|
|
|
const L_FileDoesntExist_ErrorMessage = "That file does not exist."
|
|
|
|
'
|
|
' If a file is selected add this to the list
|
|
'
|
|
if document.all.AdditionalFile.value = "" Then
|
|
BRP_MessageBox L_NeedFilename_ErrorMessage
|
|
document.all.AdditionalFile.focus
|
|
exit sub
|
|
end if
|
|
|
|
'
|
|
' Remove leading/trailing spaces
|
|
'
|
|
szFileName = removeLeadingSpace(document.all.AdditionalFile.value)
|
|
|
|
fAlreadyExists = LIST_checkIfExists(szFileName)
|
|
|
|
if fAlreadyExists then
|
|
BRP_MessageBox document.all.AdditionalFile.value & L_FileAlreadySelected_ErrorMessage
|
|
document.all.AdditionalFile.focus
|
|
exit sub
|
|
end if
|
|
|
|
|
|
|
|
|
|
Set oFS = CreateObject("Scripting.FileSystemObject")
|
|
|
|
If NOT oFS.FileExists(szFileName) Then
|
|
BRP_MessageBox L_FileDoesntExist_ErrorMessage & _
|
|
"(" & szFileName & ")"
|
|
document.all.AdditionalFile.focus
|
|
exit sub
|
|
end if
|
|
|
|
|
|
Call LIST_addElement(szFileName)
|
|
document.all.AdditionalFile.focus
|
|
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub BRP_ListRemoveFileForUpload()
|
|
|
|
const L_RemoveSelectFile_ErrorMessage = "Please select a file to be removed."
|
|
const L_NoFilesToRemove_ErrorMessage = "There are no files that can be removed."
|
|
|
|
if document.all.AdditionalFilesScroll_List_UL.childNodes.length = 0 then
|
|
Call BRP_MessageBox(L_NoFilesToRemove_ErrorMessage)
|
|
exit sub
|
|
end if
|
|
|
|
Call LIST_deleteSelectedElement(L_RemoveSelectFile_ErrorMessage)
|
|
document.all.RemoveFile.focus
|
|
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub CorrectBetaID()
|
|
|
|
Dim szName, period
|
|
'
|
|
' Remove anything after a .
|
|
'
|
|
period = instr(window.event.srcElement.value,".")
|
|
if period <> 0 then
|
|
szName = left(window.event.srcElement.value, period-1)
|
|
window.event.srcElement.value = left(window.event.srcElement.value, period-1)
|
|
end if
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
function CreateNameCABInternal(szName)
|
|
|
|
Dim szName1, szName2
|
|
|
|
'
|
|
' Clean title
|
|
'
|
|
szName = removeLeadingSpace(szName)
|
|
szName = removeTrailingSpace(szName)
|
|
szName = validateFilename(szName,"_")
|
|
|
|
szName = g_SettingsLastPath & "\" & szName & ".cab"
|
|
|
|
document.all.IncidentFilename.value = szName
|
|
|
|
CreateNameCABInternal = TRUE
|
|
|
|
end function
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub CreateNameCAB(limit)
|
|
ValidateTextLength(limit)
|
|
CreateNameCABInternal(window.event.srcElement.value)
|
|
|
|
end sub
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub CorrectNameCAB()
|
|
|
|
Dim szName, szFileName, period, slash
|
|
|
|
'
|
|
' Remove leading/trailing spaces
|
|
'
|
|
szFileName = window.event.srcElement.value
|
|
|
|
szFileName = removeLeadingSpace(window.event.srcElement.value)
|
|
szFileName = removeTrailingSpace(szFileName)
|
|
|
|
'
|
|
' Add the .cab extension and only use the last period
|
|
'
|
|
period = instrrev(szFileName,".")
|
|
if period <> 0 then
|
|
szName = left(szFileName, period-1)
|
|
szNameR = right(szFileName, len(szFileName)-period)
|
|
if szName = "" then
|
|
window.event.srcElement.value = "bugdata.cab"
|
|
else
|
|
if szNameR = "cab" then
|
|
'
|
|
' Its OK for now
|
|
'
|
|
else
|
|
szFileName = szFileName & ".cab"
|
|
end if
|
|
end if
|
|
else
|
|
if szFileName = "" then
|
|
szFileName = "bugdata" & ".cab"
|
|
else
|
|
slash = instrrev(szFileName,"\")
|
|
if slash <> 0 then
|
|
szNameR = right(szFileName, len(szFileName)-slash)
|
|
if szNameR = "" then
|
|
szFileName = szFileName & "bugdata.cab"
|
|
else
|
|
szFileName = szFileName & ".cab"
|
|
end if
|
|
else
|
|
szFileName = szFileName & ".cab"
|
|
end if
|
|
end if
|
|
end if
|
|
|
|
'
|
|
' validate filename and append validated file name
|
|
'
|
|
slash = instrrev(szFileName,"\")
|
|
if slash <> 0 then
|
|
szNameR = right(szFileName, len(szFileName)-slash)
|
|
szNameR = validateFileName(szNameR,"_")
|
|
szFileName = left(szFileName,slash-1)
|
|
szFileName = szFileName & "\" & szNameR
|
|
else
|
|
szFileName = validateFileName(szFileName,"_")
|
|
end if
|
|
|
|
window.event.srcElement.value = szFileName
|
|
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub BRP_InitializeAll()
|
|
|
|
Const ForReading = 1, ForWriting = 2
|
|
|
|
const L_InitializeAll_ErrorMessage = "An error occurred when initializing bug reporting on your computer."
|
|
const L_InitFile_FileName = "brp_init.ini"
|
|
|
|
Dim oFS, oDataFile
|
|
Dim fInitialize
|
|
|
|
fInitialize = True
|
|
|
|
on error resume next
|
|
|
|
Err.Clear
|
|
Set oFS = CreateObject("Scripting.FileSystemObject")
|
|
if Err.number <> 0 then
|
|
Call BRP_MessageBox(L_InitializeAll_ErrorMessage)
|
|
exit sub
|
|
end if
|
|
|
|
if ( oFS.FileExists( GetVendorPath & "\" & L_InitFile_FileName )) then
|
|
|
|
'
|
|
' Read current version from ini file and if older then do init
|
|
'
|
|
Set oDataFile = oFS.OpenTextFile((GetVendorPath & "\" & L_InitFile_FileName), ForReading)
|
|
szIniVersion = oDataFile.ReadLine
|
|
oDataFile.Close
|
|
|
|
nBrpVer = CInt(L_BRPBuild_Version)
|
|
nIniVer = CInt(szIniVersion)
|
|
|
|
'
|
|
' If bug reporting and ini file have same version then its OK
|
|
' else just initialize
|
|
'
|
|
if nBrpVer = nIniVer then
|
|
fInitialize = False
|
|
else
|
|
fInitialize = True
|
|
end if
|
|
|
|
end if
|
|
|
|
if fInitialize = True then
|
|
'
|
|
' Write current version to bug reporting ini file
|
|
'
|
|
Set oDataFile = oFS.CreateTextFile((GetVendorPath & "\" & L_InitFile_FileName), True)
|
|
oDataFile.Write L_BRPBuild_Version
|
|
oDataFile.Close
|
|
end if
|
|
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub BRP_SetInterfaceBasedOnDefaults()
|
|
|
|
Dim oFS ' File System Object
|
|
|
|
const L_DataFile_FileName = "\bugdata.cab"
|
|
const L_Kernel_Message = "Kernel"
|
|
const L_SomeApp_Message = "Some Application"
|
|
const L_Crashed_Message = " Crashed"
|
|
const L_Description_Message = " crashed."
|
|
const L_Expected_Message = " should not crash."
|
|
const L_CrashDumpFileMissing_ErrorMessage = "CrashDumpFile is missing"
|
|
const L_CrashRepro_Message = "[Repro steps will help us diagnosing the problem]"
|
|
|
|
on error resume next
|
|
Err.Clear
|
|
|
|
'
|
|
' Set defaults which are stored
|
|
'
|
|
|
|
document.all.BetaID.value = g_SettingsBetaId
|
|
document.all.Emailaddr_Input.value = g_SettingsEmail
|
|
|
|
if g_SettingsSKU <> "" Then
|
|
document.all.SKU.value = g_SettingsSKU
|
|
end if
|
|
|
|
if g_SettingsUpgrad <> "" Then
|
|
document.all.upgrade.value = g_SettingsUpgrade
|
|
end if
|
|
|
|
document.all.IncidentFilename.value = g_SettingsLastPath & L_DataFile_FileName
|
|
document.all.CollectOk.checked = g_SettingsShareInfo
|
|
document.all.SubmitIncidentNow.checked = g_SettingsSubmitNow
|
|
document.all.SaveIncidentNow.checked = g_SettingsSaveToDisk
|
|
|
|
if Len(g_CrashDumpFile) > 0 then
|
|
'
|
|
' we are invoked by a fault handler
|
|
'
|
|
document.all.Severity.value = "1" 'we need to add one more type for BSOD
|
|
|
|
if Len(g_CrashApp) <= 0 then
|
|
'
|
|
' in case g_CrashApp is blank
|
|
'
|
|
if g_KernelCrash then
|
|
g_CrashApp = L_Kernel_Message
|
|
else
|
|
g_CrashApp = L_SomeApp_Message
|
|
end if
|
|
end if
|
|
document.all.Title.value = g_CrashApp & L_Crashed_Message
|
|
Call CreateNameCABInternal(document.all.Title.value)
|
|
|
|
document.all.Description.value = g_CrashApp & L_Description_Message
|
|
document.all.ExpectedBehavior.value = g_CrashApp & L_Expected_Message
|
|
document.all.Area.value = "Other"
|
|
document.all.Reproducibility.value = "Sometimes"
|
|
document.all.StepsToRepro.value = L_CrashRepro_Message
|
|
|
|
'
|
|
' add file to the attachment list
|
|
'
|
|
Set oFS = CreateObject("Scripting.FileSystemObject")
|
|
if Err.number <> 0 then
|
|
Call BRP_MessageBox(L_InitializeAll_ErrorMessage)
|
|
exit sub
|
|
end if
|
|
if oFS.FileExists( g_CrashDumpFile ) then
|
|
Call LIST_addElement(g_CrashDumpFile)
|
|
|
|
else
|
|
'
|
|
' for debugging only. Will take it out once fault handler is code complete
|
|
'
|
|
Call BRP_MessageBox(L_CrashDumpFileMissing_ErrorMessage & ": " & g_CrashDumpFile)
|
|
end if
|
|
'
|
|
'for debugging only
|
|
'
|
|
'Call BRP_MessageBox("crashdump: " & g_CrashDumpFile & " crashapp: " & g_Crashapp & " bsod:" & cint(g_kernelcrash) & " deldump: " & cint(g_deletecrashdump))
|
|
'
|
|
end if
|
|
|
|
end sub
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub BRP_WriteIniFile()
|
|
|
|
Const ForReading = 1, ForWriting = 2
|
|
|
|
const L_InitializeIni_ErrorMessage = "An error occurred when initializing bug reporting on your computer."
|
|
const L_WIniFile_FileName = "brp_settings.ini"
|
|
|
|
Dim oFS, oDataFile
|
|
Dim szTemp, nTemp, slash
|
|
|
|
on error resume next
|
|
|
|
Err.Clear
|
|
Set oFS = CreateObject("Scripting.FileSystemObject")
|
|
if Err.number <> 0 then
|
|
exit sub
|
|
end if
|
|
|
|
'
|
|
' Create ini file
|
|
'
|
|
Set oDataFile = oFS.CreateTextFile((GetVendorPath & "\" & L_WIniFile_FileName), True)
|
|
|
|
oDataFile.Write document.all.BetaID.value & vbCrLf
|
|
oDataFile.Write document.all.Emailaddr_Input.value & vbCrLf
|
|
oDataFile.Write document.all.SKU.value & vbCrLf
|
|
oDataFile.Write document.all.upgrade.value & vbCrLf
|
|
szTemp = document.all.IncidentFilename.value
|
|
slash = instrrev(szTemp,"\")
|
|
if slash <> 0 then
|
|
szTemp = left(szTemp,slash-1)
|
|
oDataFile.Write szTemp & vbCrLf
|
|
else
|
|
oDataFile.Write GetSystemDrivePath() & vbCrLf
|
|
end if
|
|
|
|
nTemp = 0
|
|
if document.all.CollectOk.checked then
|
|
nTemp = 1
|
|
end if
|
|
oDataFile.Write nTemp & vbCrLf
|
|
|
|
nTemp = 0
|
|
if document.all.SubmitIncidentNow.checked then
|
|
nTemp = 1
|
|
end if
|
|
oDataFile.Write nTemp & vbCrLf
|
|
|
|
nTemp = 0
|
|
if document.all.SaveIncidentNow.checked then
|
|
nTemp = 1
|
|
end if
|
|
oDataFile.Write nTemp & vbCrLf
|
|
|
|
'
|
|
' Close file
|
|
'
|
|
oDataFile.Close
|
|
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub BRP_CleanCrashDump()
|
|
Dim oFS
|
|
|
|
On Error Resume Next
|
|
Err.Clear
|
|
|
|
if Len(g_CrashDumpFile) > 0 AND g_DeleteCrashDump then
|
|
Set oFS = CreateObject("Scripting.FileSystemObject")
|
|
if Err.number <> 0 then
|
|
Call BRP_MessageBox(L_InitializeAll_ErrorMessage)
|
|
exit sub
|
|
end if
|
|
|
|
call oFS.DeleteFile(g_CrashDumpFile, TRUE)
|
|
'
|
|
' end of bug filing, reset the global variable
|
|
'
|
|
end if
|
|
g_DeleteCrashDump = FALSE
|
|
g_CrashDumpFile = ""
|
|
g_CrashApp = ""
|
|
g_KernelCrash = FALSE
|
|
|
|
end sub
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub BRP_ReadIniFile()
|
|
|
|
Const ForReading = 1, ForWriting = 2
|
|
|
|
const L_IniFile_FileName = "brp_settings.ini"
|
|
const L_BugReport_FileName = "whistler_bugs"
|
|
|
|
Dim oFS, oDataFile
|
|
Dim szTemp, nTemp
|
|
Dim szHRef
|
|
Dim nQueryStr, nQueryStart
|
|
Dim QueryStrings
|
|
|
|
on error resume next
|
|
Err.Clear
|
|
|
|
Set oFS = CreateObject("Scripting.FileSystemObject")
|
|
if Err.number <> 0 then
|
|
exit sub
|
|
end if
|
|
|
|
g_SettingsBetaId = ""
|
|
g_SettingsLastPath = GetSystemDrivePath() & "\" & L_BugReport_FileName
|
|
g_SettingsShareInfo = True
|
|
g_SettingsSubmitNow = True
|
|
g_SettingsSaveToDisk = True
|
|
|
|
Call BRP_SetInterfaceBasedOnDefaults()
|
|
|
|
if ( oFS.FileExists( GetVendorPath & "\" & L_IniFile_FileName )) then
|
|
|
|
'
|
|
' Read current version from ini file and if older then do init
|
|
'
|
|
Set oDataFile = oFS.OpenTextFile((GetVendorPath & "\" & L_IniFile_FileName), ForReading)
|
|
if Err.number <> 0 then
|
|
exit sub
|
|
end if
|
|
'
|
|
' Read beta id
|
|
'
|
|
|
|
szTemp = oDataFile.ReadLine
|
|
if Err.number <> 0 then
|
|
oDataFile.close
|
|
Call BRP_SetInterfaceBasedOnDefaults()
|
|
exit sub
|
|
end if
|
|
g_SettingsBetaId = CDbl(szTemp)
|
|
if g_SettingsBetaId < 0 OR g_SettingsBetaId > 2147483647 then
|
|
g_SettingsBetaId = ""
|
|
end if
|
|
'
|
|
' Read Email Addr.
|
|
'
|
|
Err.Clear
|
|
szTemp = oDataFile.ReadLine
|
|
if Err.number <> 0 then
|
|
oDataFile.close
|
|
Call BRP_SetInterfaceBasedOnDefaults()
|
|
exit sub
|
|
end if
|
|
g_SettingsEmail = szTemp
|
|
if g_SettingsEmail = "" or len(g_SettingsEmail) < 6 OR (instr(g_SettingsEmail,"@") = 0) or (instr(g_SettingsEmail,".") = 0) then
|
|
g_SettingsEmail = ""
|
|
end if
|
|
'
|
|
' Read SKU.
|
|
'
|
|
Err.Clear
|
|
szTemp = oDataFile.ReadLine
|
|
if Err.number <> 0 then
|
|
oDataFile.close
|
|
Call BRP_SetInterfaceBasedOnDefaults()
|
|
exit sub
|
|
end if
|
|
g_SettingsSKU = szTemp
|
|
|
|
'
|
|
' Read upgrade.
|
|
'
|
|
Err.Clear
|
|
szTemp = oDataFile.ReadLine
|
|
if Err.number <> 0 then
|
|
oDataFile.close
|
|
Call BRP_SetInterfaceBasedOnDefaults()
|
|
exit sub
|
|
end if
|
|
g_SettingsUpgrade = szTemp
|
|
|
|
|
|
'
|
|
' Read last path
|
|
'
|
|
szTemp = oDataFile.ReadLine
|
|
if Err.number <> 0 then
|
|
oDataFile.close
|
|
Call BRP_SetInterfaceBasedOnDefaults()
|
|
exit sub
|
|
end if
|
|
if oFS.FolderExists( szTemp ) then
|
|
g_SettingsLastPath = szTemp
|
|
end if
|
|
'
|
|
' Read share info
|
|
'
|
|
szTemp = oDataFile.ReadLine
|
|
if Err.number <> 0 then
|
|
oDataFile.close
|
|
Call BRP_SetInterfaceBasedOnDefaults()
|
|
exit sub
|
|
end if
|
|
g_SettingsShareInfo = CBool(szTemp)
|
|
'
|
|
' Read submit now
|
|
'
|
|
szTemp = oDataFile.ReadLine
|
|
if Err.number <> 0 then
|
|
oDataFile.close
|
|
Call BRP_SetInterfaceBasedOnDefaults()
|
|
exit sub
|
|
end if
|
|
g_SettingsSubmitNow = CBool(szTemp)
|
|
'
|
|
' Read save to disk
|
|
'
|
|
szTemp = oDataFile.ReadLine
|
|
if Err.number <> 0 then
|
|
oDataFile.close
|
|
Call BRP_SetInterfaceBasedOnDefaults()
|
|
exit sub
|
|
end if
|
|
g_SettingsSaveToDisk = CBool(szTemp)
|
|
|
|
'
|
|
' Close file
|
|
'
|
|
oDataFile.Close
|
|
|
|
end if
|
|
|
|
g_CrashApp = ""
|
|
g_KernelCrash = FALSE
|
|
g_CrashDumpFile = ""
|
|
g_DeleteCrashDump = FALSE
|
|
|
|
'
|
|
' when the bug reporting page is invoked as:
|
|
' hcp://CN=Microsoft Corporation,L=Redmond,S=Washington,C=US/bugrep.htm?_
|
|
' CrashApp=Microsoft Word&DumpFile=d:\temp\common files\t.dmp&bsod=1&deldump=1
|
|
' href contains:
|
|
' hcp://CN=Microsoft%20Corporation,L=Redmond,S=Washington,C=US/bugrep.htm?_
|
|
' CrashApp=Microsoft%20Word&DumpFile=d:\temp\common%20files\t.dmp&bsod=1&deldump=1
|
|
'
|
|
szHRef = LCase(window.location.href)
|
|
nQueryStart = InStr(1, szHRef, "?", 1)
|
|
if (nQueryStart > 1) then
|
|
szHRef = Mid(szHRef, nQueryStart + 1)
|
|
QueryStrings = Split(szHRef, "&", -1, 1)
|
|
'
|
|
' check the query strings
|
|
'
|
|
for each QueryStr in QueryStrings
|
|
nQueryStr = InStr(1, QueryStr, "dumpfile=", 1)
|
|
if (nQueryStr >= 1) then
|
|
'
|
|
' found DumpFile
|
|
'
|
|
nQueryStr = nQueryStr + len("dumpfile=")
|
|
g_CrashDumpFile = createUnEscapedString(Mid(QueryStr, nQueryStr))
|
|
else
|
|
nQueryStr = InStr(1, QueryStr, "crashapp=", 1)
|
|
if (nQueryStr >= 1) then
|
|
'
|
|
' found CrashApp
|
|
'
|
|
nQueryStr = nQueryStr + len("crashapp=")
|
|
g_CrashApp = createUnEscapedString(Mid(QueryStr, nQueryStr))
|
|
else
|
|
nQueryStr = InStr(1, QueryStr, "bsod=", 1)
|
|
if (nQueryStr >= 1) then
|
|
'
|
|
' found BSOD
|
|
'
|
|
nQueryStr = nQueryStr + len("bsod=")
|
|
if ("1" = Mid(QueryStr, nQueryStr)) then
|
|
g_KernelCrash = TRUE
|
|
else
|
|
g_kernelCrash = FALSE
|
|
end if
|
|
else
|
|
nQueryStr = InStr(1, QueryStr, "deldump=", 1)
|
|
if (nQueryStr >= 1) then
|
|
'
|
|
' found deldump
|
|
'
|
|
nQueryStr = nQueryStr + len("deldump=")
|
|
if ("1" = Mid(QueryStr, nQueryStr)) then
|
|
g_DeleteCrashDump = TRUE
|
|
else
|
|
g_DeleteCrashDump = FALSE
|
|
end if
|
|
end if
|
|
end if
|
|
end if
|
|
end if
|
|
next
|
|
end if
|
|
|
|
Call BRP_SetInterfaceBasedOnDefaults()
|
|
|
|
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub BRP_OnProblemTypeChange()
|
|
|
|
end sub
|
|
|
|
'------------------------------------------------------------------------------
|
|
'
|
|
'
|
|
'
|
|
'------------------------------------------------------------------------------
|
|
sub BRP_OnAreaChange()
|
|
|
|
Dim szArea
|
|
|
|
on error resume next
|
|
|
|
szArea = document.all.Area.value
|
|
|
|
Select Case szArea
|
|
case "Application Game Compatiblity", "Display Video Multimonitor", "Hardware Drivers PlugAndPlay USB", "Multimedia DirectX DVD Cameras"
|
|
document.all.DirectXInfo.style.display = ""
|
|
call DelListElement2(document.all.ActualFiles_List,"%windir%\system.dat")
|
|
call DelListElement2(document.all.ActualFiles_List,"%windir%\user.dat")
|
|
call DelListElement2(document.all.ActualFiles_List,"%windir%\classes.dat")
|
|
case "Setup"
|
|
document.all.DirectXInfo.style.display = "none"
|
|
call AddListElement2(document.all.ActualFiles_List.options,"%windir%\system.dat")
|
|
call AddListElement2(document.all.ActualFiles_List.options,"%windir%\user.dat")
|
|
call AddListElement2(document.all.ActualFiles_List.options,"%windir%\classes.dat")
|
|
case Else
|
|
document.all.DirectXInfo.style.display = "none"
|
|
call DelListElement2(document.all.ActualFiles_List,"%windir%\system.dat")
|
|
call DelListElement2(document.all.ActualFiles_List,"%windir%\user.dat")
|
|
call DelListElement2(document.all.ActualFiles_List,"%windir%\classes.dat")
|
|
end select
|
|
end sub
|
|
</script>
|
|
|
|
<SCRIPT LANGUAGE="VBScript" FOR=window EVENT=onload>
|
|
|
|
const L_BugReportVerStr_Message = "Bug Reporting Page Version "
|
|
|
|
on error resume next
|
|
'
|
|
' Set page version
|
|
'
|
|
document.all.BRP_VersionText.innerHTML = L_BugReportVerStr_Message & L_BRP_Version & L_BRPBuild_Version
|
|
|
|
'
|
|
' Initialize all
|
|
'
|
|
Call BRP_InitializeAll()
|
|
|
|
Err.Clear
|
|
Set oSysInfo = CreateObject("PCHealth.BugRepSysInfo")
|
|
if Err.number = 0 then
|
|
document.all.OS_Name.innerHTML = "Windows Whistler"
|
|
document.all.OS_Version.innerHTML = oSysInfo.GetOSVersionString
|
|
document.all.OS_Language.innerHTML = oSysInfo.GetLanguageID
|
|
document.all.OS_UserLCID.innerHTML = oSysInfo.GetUserDefaultLCID
|
|
document.all.OS_SysACP.innerHTML = oSysInfo.GetActiveCP
|
|
|
|
Call BRP_SetOSBuild(oSysInfo.GetOSVersionString)
|
|
|
|
end if
|
|
|
|
Err.Clear
|
|
|
|
'
|
|
' Read initialization file
|
|
'
|
|
Call BRP_ReadIniFile()
|
|
|
|
'
|
|
' Set focus to betaid after page load
|
|
'
|
|
if Len(g_CrashDumpFile) > 0 then
|
|
'
|
|
' we are invoked by a crash handler
|
|
'
|
|
document.all.Submit.focus
|
|
else
|
|
document.all.BetaID.focus
|
|
end if
|
|
|
|
'
|
|
' CODEWORK:
|
|
' bug#102991: pchealth.DestinationReachable always reports FALSE, even though IE
|
|
' connects to www.microsoft.com without any problem. Once bug#102991 is fixed, the following
|
|
' three lines need to be uncommented.
|
|
'
|
|
'if NOT pchealth.DestinationReachable(g_TestingURL) then
|
|
' Call BRP_MessageBox(L_NoConnection1_ErrorMessage & vbNewLine & vbNewLine & L_NoConnection2_ErrorMessage)
|
|
'end if
|
|
|
|
</SCRIPT>
|
|
<SCRIPT LANGUAGE="JavaScript">
|
|
function Beta_GetPaste()
|
|
{
|
|
var sPasteContents = window.clipboardData.getData("Text");
|
|
var bResult;
|
|
var L_BetaIDPasteError_Message = "Beta ID must be a number.";
|
|
bResult = Beta_CheckNumeric(sPasteContents);
|
|
if(bResult == false)
|
|
{
|
|
BRP_MessageBox(L_BetaIDPasteError_Message);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
function Beta_CheckNumeric(strContents)
|
|
{
|
|
var NumStr = "0123456789";
|
|
var i;
|
|
var length = strContents.length;
|
|
for(i = 0 ; i < length;i++)
|
|
{
|
|
if(-1 == NumStr.indexOf(strContents.charAt(i)))
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
|
|
|
|
<script language=JavaScript>
|
|
|
|
//
|
|
// UPL - Upload handler
|
|
// DC - Data collection handler
|
|
// CAB - Cab file creation handler
|
|
//
|
|
|
|
var DCHandlerEnabled = 0;
|
|
var UPLHandlerEnabled = 0;
|
|
var CabHandlerEnabled = 0;
|
|
|
|
//
|
|
// Check if machine data stream is not NULL given a data collection object
|
|
//
|
|
function IsMachineDataValid(ptrDc)
|
|
{
|
|
|
|
var stream = ptrDc.MachineData_GetStream() ;
|
|
|
|
if ( stream != null ) {
|
|
return true ;
|
|
}
|
|
else
|
|
return false ;
|
|
}
|
|
|
|
//
|
|
// Check if machine history data stream is not NULL given a data collection object
|
|
//
|
|
function IsHistoryDataValid(ptrDc)
|
|
{
|
|
|
|
var stream = ptrDc.History_GetStream() ;
|
|
|
|
if ( stream != null ) {
|
|
return true ;
|
|
}
|
|
else
|
|
return false ;
|
|
}
|
|
|
|
//
|
|
// Create escaped string
|
|
//
|
|
function createEscapedString(str)
|
|
{
|
|
|
|
return escape(str);
|
|
|
|
}
|
|
|
|
//
|
|
// Create unescaped string
|
|
//
|
|
function createUnEscapedString(str)
|
|
{
|
|
|
|
return unescape(str);
|
|
|
|
}
|
|
|
|
function dc_onStatusChangeJS(DataCollectionPtr, status)
|
|
{
|
|
if (DCHandlerEnabled == 1) {
|
|
dc_onStatusChange(DataCollectionPtr, status);
|
|
}
|
|
}
|
|
|
|
function dc_onProgressJS(DataCollectionPtr, done, total)
|
|
{
|
|
if (DCHandlerEnabled == 1) {
|
|
dc_onProgress(DataCollectionPtr, done, total);
|
|
}
|
|
}
|
|
|
|
function dc_onCompleteJS(DataCollectionPtr, hresult)
|
|
{
|
|
if (DCHandlerEnabled == 1) {
|
|
dc_onComplete(DataCollectionPtr, hresult);
|
|
}
|
|
}
|
|
|
|
function RegisterDCHandlers()
|
|
{
|
|
DCHandlerEnabled = 1;
|
|
g_oDc.onStatusChange = dc_onStatusChangeJS;
|
|
g_oDc.onProgress = dc_onProgressJS;
|
|
g_oDc.onComplete = dc_onCompleteJS;
|
|
}
|
|
|
|
function UnregisterDCHandlers()
|
|
{
|
|
DCHandlerEnabled = 0;
|
|
}
|
|
|
|
|
|
function upl_onStatusChangeJS(UploadJobPtr, status)
|
|
{
|
|
if (UPLHandlerEnabled == 1) {
|
|
upl_onStatusChange(UploadJobPtr, status);
|
|
}
|
|
}
|
|
|
|
function upl_onProgressChangeJS(UploadJobPtr, currentSize, totalSize)
|
|
{
|
|
if (UPLHandlerEnabled == 1) {
|
|
upl_onProgressChange(UploadJobPtr, currentSize, totalSize);
|
|
}
|
|
}
|
|
|
|
function RegisterUPLHandlers()
|
|
{
|
|
UPLHandlerEnabled = 1;
|
|
g_oUpl.onStatusChange = upl_onStatusChangeJS;
|
|
g_oUpl.onProgressChange = upl_onProgressChangeJS;
|
|
}
|
|
|
|
function UnregisterUPLHandlers()
|
|
{
|
|
UPLHandlerEnabled = 0;
|
|
}
|
|
|
|
|
|
function cab_onCompleteJS(CabPtr, hresult)
|
|
{
|
|
if (CabHandlerEnabled == 1) {
|
|
cab_onComplete(CabPtr, hresult)
|
|
}
|
|
}
|
|
|
|
function RegisterCabHandler()
|
|
{
|
|
CabHandlerEnabled = 1;
|
|
g_oCab.onComplete = cab_onCompleteJS;
|
|
}
|
|
|
|
function UnregisterCabHandler()
|
|
{
|
|
CabHandlerEnabled = 0;
|
|
}
|
|
|
|
function UnloadHandler()
|
|
{
|
|
CancelUpload();
|
|
}
|
|
|
|
function UnloadHandlerMsg()
|
|
{
|
|
|
|
var L_CancelUpload1_Message = "Currently collecting and uploading bug report information.\n";
|
|
var L_CancelUpload2_Message = "Navigating away will cancel the current collection/upload.";
|
|
if ( BRP_Working() ) {
|
|
return ( L_CancelUpload1_Message + L_CancelUpload2_Message) ;
|
|
}
|
|
else
|
|
return ;
|
|
}
|
|
|
|
</script>
|
|
|
|
<!--
|
|
|
|
New stuff in bug reporting page
|
|
|
|
-->
|
|
|
|
<STYLE TYPE="text/css">
|
|
.styleExpandable
|
|
{
|
|
COLOR: blue;
|
|
CURSOR: hand ;
|
|
FONT: bold 10pt Trebuchet MS, Tahoma, arial
|
|
}
|
|
.styleExpanded
|
|
{
|
|
COLOR:black;
|
|
FONT: bold 8pt Trebuchet MS, Tahoma, arial
|
|
}
|
|
.styleCollapsed
|
|
{
|
|
DISPLAY: none
|
|
}
|
|
</STYLE>
|
|
|
|
<SCRIPT LANGUAGE="JavaScript">
|
|
function LIST_addElement(src)
|
|
{
|
|
var oEntry = document.createElement("LI");
|
|
var oList = document.all.AdditionalFilesScroll_List_UL ;
|
|
|
|
oEntry.innerHTML = "\<DIV DIR=LTR NOWRAP TABINDEX=0\>" + src + "\<\/DIV\>";
|
|
|
|
//
|
|
// Append element to list
|
|
//
|
|
oList.appendChild(oEntry);
|
|
}
|
|
|
|
function LIST_deleteSelectedElement(errmsg)
|
|
{
|
|
var oList = document.all.AdditionalFilesScroll_List_UL ;
|
|
var oNodes = oList.childNodes ;
|
|
var bElemDel= false ;
|
|
|
|
if ( oNodes.length > 0 ) {
|
|
for ( i = 0 ; i < oNodes.length ; i++ ) {
|
|
if ( oNodes.item(i) == oList.selected ) {
|
|
oNodes.item(i).removeNode(true);
|
|
bElemDel=true ;
|
|
break ;
|
|
};
|
|
}
|
|
if (bElemDel == false)
|
|
{
|
|
BRP_MessageBox(errmsg);
|
|
}
|
|
};
|
|
}
|
|
|
|
function LIST_checkIfExists(src)
|
|
{
|
|
var oList = document.all.AdditionalFilesScroll_List_UL ;
|
|
var oNodes = oList.childNodes ;
|
|
var fExists = false ;
|
|
if ( oNodes.length > 0 ) {
|
|
for ( i = 0 ; i < oNodes.length ; i++ ) {
|
|
if ( oNodes.item(i).innerText == src )
|
|
{
|
|
fExists = true ;
|
|
break ;
|
|
};
|
|
}
|
|
};
|
|
return fExists ;
|
|
}
|
|
|
|
function LIST_fnOnSelectStart()
|
|
{
|
|
|
|
window.event.returnValue = false
|
|
window.event.cancelBubble = true
|
|
|
|
return false ;
|
|
|
|
}
|
|
|
|
function LIST_checkParent(src, tag) {
|
|
while ("HTML" != src.tagName) {
|
|
if (tag == src.tagName)
|
|
return src;
|
|
src = src.parentElement;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
function LIST_selectItem(list) {
|
|
|
|
var el = LIST_checkParent(event.srcElement, "LI");
|
|
|
|
if ( !el )
|
|
return ;
|
|
|
|
if ("LI" == el.tagName) {
|
|
if (null != list.selected)
|
|
list.selected.className = "";
|
|
if (list.selected != el) {
|
|
el.className = "selected";
|
|
list.selected = el;
|
|
}
|
|
else
|
|
list.selected = null;
|
|
}
|
|
|
|
}
|
|
|
|
function LIST_selectItemKey(list)
|
|
{
|
|
|
|
if ( event.keyCode == 13 || event.keyCode == 32 ) {
|
|
window.event.returnValue=true;
|
|
window.event.cancelBubble=true;
|
|
LIST_selectItem(list);
|
|
}
|
|
else {
|
|
event.returnValue=false;
|
|
};
|
|
}
|
|
|
|
|
|
|
|
</Script>
|
|
|
|
<SCRIPT LANGUAGE="JavaScript">
|
|
|
|
//
|
|
// Generic display code for collapsing outlines
|
|
//
|
|
function outliner() {
|
|
// Get Child element.
|
|
var child =
|
|
document.all[event.srcElement.getAttribute("child",
|
|
false)];
|
|
// If the child element exists, expand or collapse it.
|
|
if (null != child)
|
|
child.className = child.className == "styleCollapsed" ?
|
|
"styleExpanded" : "styleCollapsed";
|
|
}
|
|
|
|
//
|
|
// Add an element to the list box with origin being the
|
|
// starting select element in the DOM
|
|
//
|
|
function addListElement(origin,text,value)
|
|
{
|
|
|
|
var el = document.createElement("OPTION");
|
|
el.text = text;
|
|
el.value = value;
|
|
origin.options.add(el);
|
|
|
|
}
|
|
|
|
//
|
|
// Delete an element from a single select list and if no
|
|
// element found then show the error message, if multiple
|
|
// items are selected the code exists after the first instance
|
|
//
|
|
function delListElement(origin,errmsg)
|
|
{
|
|
|
|
var iRemove = 0 ;
|
|
var iFound = false ;
|
|
|
|
if ( origin.length == 0 ) {
|
|
return ;
|
|
}
|
|
|
|
for ( var iLoop = 0 ; iLoop < origin.length ; iLoop++ ) {
|
|
if ( origin[iLoop].selected ) {
|
|
iRemove = iLoop ;
|
|
iFound = true ;
|
|
break ;
|
|
}
|
|
}
|
|
|
|
if ( iFound ) {
|
|
origin.remove(iRemove);
|
|
}
|
|
else {
|
|
BRP_MessageBox(errmsg);
|
|
}
|
|
}
|
|
|
|
//
|
|
// Generic display code for expanding text area sizes
|
|
//
|
|
function increaseRows() {
|
|
// Get Child element.
|
|
var expand_child =
|
|
document.all[event.srcElement.getAttribute("expand_child",
|
|
false)];
|
|
// If the expand_child element exists, expand or collapse it.
|
|
if (null != expand_child) {
|
|
expand_child.rows = Math.min(expand_child.rows_max,
|
|
(expand_child.rows + 3 ));
|
|
}
|
|
|
|
}
|
|
|
|
//
|
|
// Generic display code for expanding text area sizes
|
|
//
|
|
function decreaseRows() {
|
|
// Get Child element.
|
|
var expand_child =
|
|
document.all[event.srcElement.getAttribute("expand_child",
|
|
false)];
|
|
// If the expand_child element exists, expand or collapse it.
|
|
if (null != expand_child) {
|
|
expand_child.rows = Math.max(expand_child.rows_min,
|
|
(expand_child.rows - 3 ));
|
|
}
|
|
|
|
}
|
|
|
|
//
|
|
// strip leading spaces
|
|
//
|
|
function removeLeadingSpace(str)
|
|
{
|
|
|
|
var text = str.replace(/^\s*/,"");
|
|
return text;
|
|
|
|
}
|
|
|
|
|
|
//
|
|
// strip leading spaces
|
|
//
|
|
function removeTrailingSpace(str)
|
|
{
|
|
|
|
var text = str.replace(/\s*$/,"");
|
|
return text;
|
|
}
|
|
|
|
|
|
//
|
|
// change quotations to single quotes (LocStudio has problems with this)
|
|
//
|
|
function replaceQuotes(str)
|
|
{
|
|
|
|
var text = str.replace(/\"/gi,"'"); // "
|
|
return text;
|
|
}
|
|
|
|
//
|
|
// return valid filename
|
|
//
|
|
function validateFilename(str,rep)
|
|
{
|
|
|
|
var st1 = str.replace(/:|>|<|\||\?|\*|\\|\/|\"/g,rep); // : < > | ? * \ / "
|
|
|
|
return st1;
|
|
}
|
|
|
|
function escapeHTMLTag(str)
|
|
{
|
|
|
|
var st11, stl2
|
|
stl1 = str.replace(/</g,"<");
|
|
st12 = stl1.replace(/>/g,">");
|
|
return st12;
|
|
}
|
|
|
|
</SCRIPT>
|
|
|
|
</HEAD>
|
|
|
|
<!--
|
|
|
|
Body of the document for bug reporting page
|
|
|
|
-->
|
|
<BODY aLink=#000080 bgColor=#ffffff language=JavaScript leftMargin=0
|
|
link=#000080 onbeforeunload="return UnloadHandlerMsg();" onclick=outliner();
|
|
onunload=UnloadHandler(); topMargin=0 vLink=#000080
|
|
MARGINHEIGHT="0" MARGINWIDTH="0"><!--
|
|
|
|
Bug reporting span of the page
|
|
|
|
-->
|
|
<DIV id=spanEnterBug>
|
|
<FORM action=probrep.asp id=form1 method=post name=form1>
|
|
<TABLE border=0 borderColor=#ff0000 cellPadding=0 cellSpacing=0 width=600>
|
|
<TBODY>
|
|
<TR>
|
|
<TD align=left id=Heading_Data_Cell vAlign=top>
|
|
<TABLE border=0 id=BugReportingHeadingTable>
|
|
<TBODY>
|
|
<TR>
|
|
<TD>
|
|
<P align=left id=Page_Heading_Paragraph1>
|
|
<DIV class=PageHeading id=Page_Heading_Text
|
|
>Report a bug to the Windows Whistler Beta team.
|
|
</DIV><BR>
|
|
<DIV class=Instructions id=Welcome_Instructions_Text
|
|
>Welcome to the Whistler Bug Reporting page.
|
|
Submitting good bug reports is a vital part of testing Windows
|
|
Whistler. Good bug reports are clear, concise, and descriptive.
|
|
Before you file a bug we ask that you visit our web site at <A
|
|
href="http://windowsbeta.microsoft.com"
|
|
>http://windowsbeta.microsoft.com</A> to register at
|
|
the site and learn about the resources available to you during the
|
|
beta. <br><br></DIV>
|
|
|
|
<DIV id="Comments_info_Div">
|
|
<strong>If your feedback is a suggestion or comment about the UI or an error message,
|
|
consider using the "Comments?" link at the top of each window instead of filing a problem
|
|
report.</strong><BR><BR>
|
|
|
|
</div>
|
|
|
|
<!--
|
|
<DIV id="Welcome_BRP_Updates">
|
|
To download updates for the bug reporting application visit
|
|
<a href="http://winbeta.microsoft.com/bugrep">winbeta.microsoft.com/bugrep</a>.
|
|
<br>
|
|
<br>
|
|
</DIV>
|
|
-->
|
|
<P></P>
|
|
<P align=left id=Page_Heading_Paragraph2>
|
|
<div class=Instructions id=Welcome_ThankYou_Text
|
|
>Thanks for your feedback! </DIV>
|
|
<P></P>
|
|
<p>
|
|
<div class=Instructions id=Welcome_Closing_Text
|
|
> - The Windows Whistler Beta Team </DIV>
|
|
<P></P>
|
|
<p align=right id=BetaID_Paragraph
|
|
valign="center"></P></TD></TR></TBODY></TABLE>
|
|
<TABLE border=0 id=BugReportingInputFieldsTable>
|
|
<TBODY><!--
|
|
|
|
Section I
|
|
|
|
-->
|
|
<TR>
|
|
<TD align=left id=Space_Cell vAlign=center><IMG alt=Space border=0 id=SpaceImage src="space.gif" width=150 > </TD>
|
|
<TD> </TD></TR>
|
|
<TR>
|
|
<TD colSpan=2>
|
|
<HR>
|
|
|
|
<TABLE border=0>
|
|
<TBODY>
|
|
<TR>
|
|
<TD><IMG alt="Star graphic" border=0 id=IMG_Star_Bullet1 src="star.gif" ></TD>
|
|
<TD class=StepHeading id=Section1_Heading
|
|
>Section I: Contact
|
|
Information</TD></TR></TBODY></TABLE><BR></TD>
|
|
<TR>
|
|
<td align=right id=BetaID_Cell vAlign=center>
|
|
<div class=ItemHeadingSmall id=BetaID_Label
|
|
>Beta ID :</DIV></TD>
|
|
<TD><INPUT class=PlainTextSmall id=BetaID_Input
|
|
language=JavaScript maxLength=250 name=BetaID onblur=CorrectBetaID()
|
|
onkeypress="if ((event.keyCode < 48 || event.keyCode > 57)) event.returnValue=false;"
|
|
onpaste="return Beta_GetPaste();" size=40>
|
|
</TD></TR>
|
|
<TR>
|
|
<td align=right id=BetaID_Cell vAlign=center>
|
|
<div class=ItemHeadingSmall id=BetaID_Label
|
|
>Email Address :</DIV></TD>
|
|
<TD><INPUT class=PlainTextSmall
|
|
id=Emailaddr_Input maxLength=250 name=Emailaddr size=40
|
|
> </TD></TR><!--
|
|
|
|
Section II
|
|
|
|
-->
|
|
<TR>
|
|
<TD colSpan=2>
|
|
<HR>
|
|
|
|
<TABLE border=0>
|
|
<TBODY>
|
|
<TR>
|
|
<TD><IMG alt="Star graphic" border=0 id=IMG_Star_Bullet2 src="star.gif" ></TD>
|
|
<TD class=StepHeading id=Section2_Heading
|
|
>Section II: Issue
|
|
Information</TD></TR></TBODY></TABLE><BR></TD>
|
|
<TR>
|
|
<TD align=right id=Title_Paragraph>
|
|
<div class=ItemHeadingSmall id=Title_Label
|
|
>Problem Title:</DIV></TD>
|
|
<TD><INPUT class=PlainTextSmall id=Title_Input
|
|
maxLength=500 name=Title onblur=CreateNameCAB(200) size=60
|
|
></TD></TR>
|
|
<TR>
|
|
<TD align=right id=Title_Example_Spacer></TD>
|
|
<TD bgColor=#ffffd0>
|
|
<div class=PlainTextSmall id=Title_Example><ID
|
|
id=fooExample1><B
|
|
>Example:</B></ID> <ID id=fooExampleString1
|
|
>"Script error instead of printer
|
|
properties"</ID></DIV></TD></TR>
|
|
<TR>
|
|
<TD align=right id=Severity_Cell>
|
|
<div class=ItemHeadingSmall id=Severity_Label >
|
|
Problem Type:
|
|
</DIV>
|
|
</TD>
|
|
<TD>
|
|
<SELECT class=PlainTextSmall name=Severity onchange=BRP_OnProblemTypeChange()>
|
|
<OPTION id=Severity_SelectOne selected value=NA>=== Select One ===</OPTION>
|
|
<OPTION id=Severity_CrashHang value=1 >Crash or Hang</OPTION>
|
|
<OPTION id=Severity_FuncImpaired value=2>Functionality Impaired</OPTION>
|
|
<OPTION id=Severity_Cosmetic value=3>Minor / Cosmetic</OPTION>
|
|
<OPTION id=Severity_Trivial value=4>Trivial</OPTION>
|
|
</SELECT>
|
|
</TD>
|
|
</TR>
|
|
<TR>
|
|
<TD align=right id=Area_Cell>
|
|
<div class=ItemHeadingSmall id=Area_Label
|
|
>Area:</DIV>
|
|
</TD>
|
|
<TD><SELECT class=PlainTextSmall name=Area onchange=BRP_OnAreaChange() type="ListBox">
|
|
<OPTION id=Area_SelectOne selected value=NA>=== Select One ===</OPTION>
|
|
<option ID=Admin_tools value="Admin Tools">Administration Tools / Computer Management</OPTION>
|
|
<option ID=Any_Suggestion value="Any Suggestion">Any Suggestion or Wish</OPTION>
|
|
<option ID=App_Game_Compat value="Application Game Compatiblity">Application & Game Compatibility</OPTION>
|
|
<option ID=Bug_REporting value="Bug Reporting Tools Website">Bug Reporting Tools / Web site</OPTION>
|
|
<option ID=Clustering value="Clustering">Clustering</OPTION>
|
|
<option ID=Dial_up_ISDN value="Dial-up ISDN Infrared">Dial-up / ISDN / Infrared</OPTION>
|
|
<option ID=Display value="Display Video Multimonitor">Display / Video / Multi monitor</OPTION>
|
|
<option ID=Help_Docs value="Help Documentation">Help / Documentation</OPTION>
|
|
<option ID=Fast value="Fast User Switching">Fast User Switching</OPTION>
|
|
<option ID=Fax value="Fax">Fax</OPTION>
|
|
<option ID=Hardware value="Hardware Drivers PlugAndPlay USB">Hardware / Drivers / Plug & Play / USB</OPTION>
|
|
<option ID=HCT value="WHQL Test">HCT</OPTION>
|
|
<option ID=IE value="IE OE Netmeeting">Internet Explorer / Outlook Express / Netmeeting</OPTION>
|
|
<option ID=Inet_connection_sharing value="Internet Connection Sharing">Internet Connection Sharing</OPTION>
|
|
<option ID=IIS value="Internet Information Server">Internet Information Server</OPTION>
|
|
<option ID=Multimedia value="Multimedia DirectX DVD Cameras">Multimedia / DirectX / DVD / Cameras</OPTION>
|
|
<option ID=Networking_Admin value="Networking - Administration Tool">Networking - Administration Tools</OPTION>
|
|
<option ID=Networking_AD value="Networking - Active DirectoryDNS">Networking - Active Directory / DNS</OPTION>
|
|
<option ID=Networking_FS value="Networking - File Sharing">Networking - File Sharing</OPTION>
|
|
<option ID=Networking_R value="Networking - Routing">Networking - Routing</OPTION>
|
|
<option ID=Networking_H value="Networking - Hardware">Networking - Hardware</OPTION>
|
|
<option ID=Networking_O value="Networking - Other">Networking - Other</OPTION>
|
|
<option ID=Other value="Other">Other</OPTION>
|
|
<option ID=PowerMgmt value="Power Management ACPI">Power Management / ACPI</OPTION>
|
|
<option ID=Printing value="Printing">Printing</OPTION>
|
|
<option ID=Reginal value="Regional Settings">Regional Settings</OPTION>
|
|
<option ID=SDK_DDK value="SDK DDK API">SDK / DDK / API</OPTION>
|
|
<option ID=Security value="Security">Security</OPTION>
|
|
<option ID=Setup value="Setup Upgrade">Setup / Upgrade</OPTION>
|
|
<option ID=Shell value="Shell User Interface">Shell / User Interface</OPTION>
|
|
<option ID=Support_tools value="Support Tools Registry">Support Tools / Registry</OPTION>
|
|
<option ID=Remote_Desktop value="Terminal Services Remote Desktop">Terminal Services / Remote Desktop</OPTION>
|
|
|
|
</SELECT>
|
|
</TD>
|
|
</TR>
|
|
<TR>
|
|
<TD align=right id=Reproducibility_Cell>
|
|
<div class=ItemHeadingSmall id=Reproducibility_Label
|
|
>This Problem: </DIV></TD>
|
|
<TD>
|
|
<SELECT class=PlainTextSmall name=Reproducibility type="ListBox">
|
|
<OPTION id=Reproducibility_Always selected value=Always>Always Happens</OPTION>
|
|
<OPTION id=Reproducibility_Sometimes value=Sometimes >Sometimes Happens</OPTION>
|
|
<OPTION id=Reproducibility_Once value=Once>Happened Once</OPTION>
|
|
</SELECT>
|
|
<id id="and">and</id>
|
|
<SELECT class=PlainTextSmall name=regression type="ListBox">
|
|
<OPTION id=regression_SelectOne selected value=NA>=== Select One ===</OPTION>
|
|
<OPTION id=regression_None value=NoRegression >is new to this build of Windows.</OPTION>
|
|
<OPTION id=regression_PrevBeta value=PreviousBetaBuild >exists in previous builds of this beta.</OPTION>
|
|
<OPTION id=regression_Win2000 value=FromWin2000 >exists in Windows 2000.</OPTION>
|
|
<OPTION id=regression_WinNT value=FromWinNT >exists in Windows NT.</OPTION>
|
|
<OPTION id=regression_Win9xMe value=FromWin9xMe >exists in Windows 9x or Me.</OPTION>
|
|
<OPTION id=regression_Win9xMe value=unknown >Don't know.</OPTION>
|
|
|
|
|
|
</TD>
|
|
</TR>
|
|
<TR>
|
|
<TD align=right id=sku_Cell>
|
|
<div class=ItemHeadingSmall id=sku_Label
|
|
>This Windows install is the </DIV></TD>
|
|
<TD>
|
|
<SELECT class=PlainTextSmall name=SKU type="ListBox">
|
|
<OPTION id=SKU_SelectOne selected value=NA>=== Select One ===</OPTION>
|
|
<OPTION id=SKU_Personal value=Personal >Home (Personal) edition</OPTION>
|
|
<OPTION id=SKU_Professional value=Professional >Professional edition</OPTION>
|
|
<OPTION id=SKU_Server value=Server >Server edition</OPTION>
|
|
<OPTION id=SKU_ADSServer value=ADSServer >Advanced Server edition</OPTION>
|
|
<OPTION id=SKU_64Professional value=64Professional >Windows 2000 64 Professional edition</OPTION>
|
|
<OPTION id=SKU_64Server value=64Server >Windows 2000 64 Server edition</OPTION>
|
|
<OPTION id=SKU_DTCServer value=DTCServer >Windows 2000 Datacenter Server edition</OPTION>
|
|
</SELECT>
|
|
</TD>
|
|
</TR>
|
|
<TR>
|
|
<TD align=right id=upgrade_Cell>
|
|
<div class=ItemHeadingSmall id=upgrade_Label
|
|
>This install is </DIV></TD>
|
|
<TD>
|
|
<SELECT class=PlainTextSmall name=upgrade type="ListBox">
|
|
<OPTION id=upgrade_SelectOne selected value=NA>=== Select One ===</OPTION>
|
|
<OPTION id=upgrade_not value=NotAnUpgrade >not an upgrade (clean install).</OPTION>
|
|
<OPTION id=upgrade_Previous value=PreviousBuild >an upgrade from a previous build of this beta.</OPTION>
|
|
<OPTION id=upgrade_Win2000 value=Win2000 >an upgrade from Windows 2000.</OPTION>
|
|
<OPTION id=upgrade_WinNT value=WinNT >an upgrade from Windows NT.</OPTION>
|
|
<OPTION id=upgrade_Win9x value=Win9x >an upgrade from Windows 9x.</OPTION>
|
|
<OPTION id=upgrade_WinMe value=WinMe >an upgrade from Windows Me.</OPTION>
|
|
</SELECT>
|
|
</TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD align=right id=Description_Cell vAlign=top>
|
|
<div class=ItemHeadingSmall id=Description_Label
|
|
>Describe the problem:</DIV></TD>
|
|
<TD vAlign=top>
|
|
<TABLE>
|
|
<TBODY>
|
|
<TR>
|
|
<TD vAlign=top><TEXTAREA class=PlainTextSmall cols=60 id=Description_TextArea name=Description onblur=ValidateTextLength(1250) rows=6 wrap=virtual rows_min="6" rows_max="500"></TEXTAREA>
|
|
</TD>
|
|
<TD vAlign=top>
|
|
<TABLE>
|
|
<TBODY>
|
|
<TR>
|
|
<TD><IMG alt="Size down" border=0 id=Description_ContractButton onclick=decreaseRows() src="size_down.gif" expand_child="Description_TextArea"> </TD></TR>
|
|
<TR>
|
|
<TD><IMG alt="Size up" border=0 id=Description_ExpandButton onclick=increaseRows() src="size_up.gif" expand_child="Description_TextArea">
|
|
</TD></TR></TBODY></TABLE></TD></TD></TR></TBODY></TABLE></TD></TR>
|
|
<TR>
|
|
<TD id=Filler_Cell1> </TD>
|
|
<TD bgColor=#ffffd0>
|
|
<div class=PlainTextSmall id=Description_Example
|
|
><ID id=fooExample2><B
|
|
>Example:</B></ID> <ID id=fooExampleString2
|
|
>"I tried to right-click a printer in the
|
|
Printers folder and got a script error."</ID> </DIV></TD></TR>
|
|
<tr>
|
|
<TD align=right id=ExpectedBehavior_Cell vAlign=top
|
|
>
|
|
<div class=ItemHeadingSmall id=ExpectedBehavior_Label
|
|
>What did you expect to happen:</DIV></TD>
|
|
<TD vAlign=top>
|
|
<TABLE>
|
|
<TBODY>
|
|
<TR>
|
|
<TD vAlign=top><TEXTAREA class=PlainTextSmall cols=60 id=ExpectedBehavior_TextArea name=ExpectedBehavior onblur=ValidateTextLength(500) rows=6 wrap=virtual rows_min="6" rows_max="500"></TEXTAREA>
|
|
</TD>
|
|
<TD vAlign=top>
|
|
<TABLE>
|
|
<TBODY>
|
|
<TR>
|
|
<TD><IMG alt="Size down" border=0 id=ExpectedBehavior_ContractButton onclick=decreaseRows() src="size_down.gif" expand_child="ExpectedBehavior_TextArea"> </TD></TR>
|
|
<TR>
|
|
<TD><IMG alt="Size up" border=0 id=ExpectedBehavior_ExpandButton onclick=increaseRows() src="size_up.gif" expand_child="ExpectedBehavior_TextArea">
|
|
</TD></TR></TBODY></TABLE></TD></TD></TR></TBODY></TABLE></TD></TR>
|
|
<tr>
|
|
<TD id=Filler_Cell2> </TD>
|
|
<TD bgColor=#ffffd0>
|
|
<div class=PlainTextSmall id=ExpectedBehavior_Example
|
|
><ID id=fooExample3><B
|
|
>Example:</B></ID> <ID id=fooExampleString3
|
|
>"The context menu should have been
|
|
displayed."</ID></DIV></TD></TR>
|
|
<TR>
|
|
<TD align=right id=StepsToRepro_Cell vAlign=top
|
|
><div class=ItemHeadingSmall
|
|
id=StepsToRepro_Label>Enter the steps required
|
|
to reproduce the problem: </DIV></TD>
|
|
<TD vAlign=top>
|
|
<TABLE>
|
|
<TBODY>
|
|
<TR>
|
|
<TD vAlign=top><TEXTAREA class=PlainTextSmall cols=60 id=StepsToRepro_TextArea name=StepsToRepro onblur=ValidateTextLength(1250) rows=6 wrap=virtual rows_min="6" rows_max="500"></TEXTAREA>
|
|
</TD>
|
|
<TD vAlign=top>
|
|
<TABLE>
|
|
<TBODY>
|
|
<TR>
|
|
<TD><IMG alt="Size down" border=0 id=StepsToRepro_ContractButton onclick=decreaseRows() src="size_down.gif" expand_child="StepsToRepro_TextArea"> </TD></TR>
|
|
<TR>
|
|
<TD><IMG alt="Size up" border=0 id=StepsToRepro_ExpandButton onclick=increaseRows() src="size_up.gif" expand_child="StepsToRepro_TextArea">
|
|
</TD></TR></TBODY></TABLE></TD></TD></TR></TBODY></TABLE></TD></TR>
|
|
<TR>
|
|
<TD id=Filler_Cell3> </TD>
|
|
<TD bgColor=#ffffd0>
|
|
<div class=PlainTextSmall id=StepsToRepro_Example
|
|
><ID id=fooExample4><B
|
|
>Example:</B></ID> <ID id=fooExampleString4
|
|
>"1: From Start menu, choose Settings 2: Choose
|
|
Printers folder, 3: Right-click on a printer"</ID>
|
|
</DIV>
|
|
</TD>
|
|
</TR>
|
|
|
|
<!--
|
|
|
|
Section III
|
|
|
|
-->
|
|
<TR>
|
|
<TD colSpan=2>
|
|
<HR>
|
|
|
|
<TABLE border=0>
|
|
<TBODY>
|
|
<TR>
|
|
<TD><IMG alt="Star graphic" border=0 id=IMG_Star_Bullet3 src="star.gif" ></TD>
|
|
<TD class=StepHeading id=Section3_Heading
|
|
>Section III: System
|
|
Information</TD></TR></TBODY></TABLE><BR>
|
|
<TABLE border=0>
|
|
<TBODY>
|
|
<TR>
|
|
<TD class=PlainTextSmall id=OS_NameText
|
|
>OS Name</TD>
|
|
<TD class=PlainTextSmall id=OS_Name
|
|
> </TD></TR>
|
|
<TR>
|
|
<TD class=PlainTextSmall dir=ltr id=OS_VersionText
|
|
>OS Version</TD>
|
|
<TD class=PlainTextSmall id=OS_Version
|
|
> </TD></TR>
|
|
<TR>
|
|
<TD class=PlainTextSmall id=OS_LanguageText
|
|
>OS Language Codes</TD>
|
|
<TD class=PlainTextSmall id=OS_Parm>
|
|
<TABLE border=0>
|
|
<TBODY>
|
|
<TR>
|
|
<TD class=PlainTextSmall id=OS_Language
|
|
> </TD>
|
|
<TD>-</TD>
|
|
<TD class=PlainTextSmall id=OS_UserLCID
|
|
> </TD>
|
|
<TD>-</TD>
|
|
<TD class=PlainTextSmall id=OS_SysACP
|
|
> </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR
|
|
>
|
|
<div class=Instructions id=CollectOk_Text>When
|
|
you click <b>Submit</B>, detailed information
|
|
about your system will be collected to help us reproduce your
|
|
problem.</DIV><br><!--
|
|
|
|
Data for list of files shown as an expandable link
|
|
|
|
-->
|
|
|
|
|
|
<div class=styleExpandable id=CollectedFiles_ExpandLink
|
|
child="CollectedFiles_List">Display list of files
|
|
collected</DIV>
|
|
<div class=styleCollapsed id=CollectedFiles_List
|
|
style="MARGIN-LEFT: 30pt"><SELECT class=PlainTextSmall dir=ltr id=ActualFiles_List size=22
|
|
style="WIDTH: 300pt">
|
|
<OPTION id=File1 value=%systemroot%\ntbtlog.txt >%systemroot%\ntbtlog.txt
|
|
<OPTION id=File2 value=%systemroot%\setupact.log>%systemroot%\setupact.log
|
|
<OPTION id=File3 value=%systemroot%\setupapi.log>%systemroot%\setupapi.log
|
|
<OPTION id=File4 value=%systemroot%\setuperr.log>%systemroot%\setuperr.log
|
|
<OPTION id=File5 value=%systemroot%\setuplog.txt>%systemroot%\setuplog.txt
|
|
<OPTION id=File6 value=%systemroot%\PCHealth\HelpCtr\Config\DataSpec.XML>%systemroot%\PCHealth\HelpCtr\Config\DataSpec.XML
|
|
<OPTION id=File7 value=%systemroot%\repair\setup.log>%systemroot%\repair\setup.log
|
|
<OPTION id=File8 value=%systemroot%\system\sfp\sfplog.txt>%systemroot%\system\sfp\sfplog.txt
|
|
<OPTION id=File9 value=%systemroot%\system32\autoexec.nt>%systemroot%\system32\autoexec.nt
|
|
<OPTION id=File10 value=%systemroot%\system32\config\appevent.evt>%systemroot%\system32\config\appevent.evt
|
|
<OPTION id=File11 value=%systemroot%\system32\config\secevent.evt>%systemroot%\system32\config\secevent.evt
|
|
<OPTION id=File12 value=%systemroot%\system32\config\sysevent.evt>%systemroot%\system32\config\sysevent.evt
|
|
<OPTION id=File13 value=%systemroot%\debug\usermode\userenv.log>%systemroot%\debug\usermode\userenv.log
|
|
<OPTION id=File14 value=%systemroot%\debug\netsteup.log>%systemroot%\debug\netsteup.log
|
|
<OPTION id=File15 value=%systemroot%\debug\dcpromo.log>%systemroot%\debug\dcpromo.log
|
|
<OPTION id=File16 value=%systemdrive%\boot.ini>%systemdrive%\boot.ini
|
|
<OPTION id=File17 value=%systemdrive%\bootex.log >%systemdrive%\bootex.log
|
|
<OPTION id=File18 value=%systemdrive%\sysparse.log >%systemdrive%\sysparse.log
|
|
<OPTION id=File18 value=%systemdrive%\$winnt$.inf >%systemdrive%\$winnt$.inf
|
|
<OPTION id=File19 value=bug_upload_collect.XML>bug_upload_collect.XML<OPTION id=File22 value=bug_upload_nocollect.XML>bug_upload_nocollect.XML
|
|
<OPTION id=File20 value=%temp%\hcupdate.log>%temp%\hcupdate.log
|
|
<OPTION id=File21 value="WMI Logs">WMI Logs</OPTION>
|
|
|
|
</SELECT>
|
|
</DIV><br>
|
|
<div class=Instructions id=CollectOk_Input>
|
|
<TABLE>
|
|
<TBODY>
|
|
<TR>
|
|
<TD vAlign=top><input CHECKED
|
|
id=CollectOk name=CollectOk type=checkbox
|
|
></TD>
|
|
<TD><LABEL for=CollectOk
|
|
id=CollectOk_Label style="CURSOR: hand"
|
|
>Share this information with
|
|
Microsoft.</LABEL>
|
|
<DIV id=MS_Privacy>(See Microsoft's <a
|
|
href="http://www.microsoft.com/info/privacy.htm"
|
|
>privacy policy</A>.)
|
|
</DIV></TD></TR></TBODY></TABLE></DIV><br>
|
|
<div id=NoCollect_FileList>If the above box is
|
|
unchecked system information is not collected but files listed above
|
|
are uploaded with the bug incident. </DIV><br>
|
|
<TABLE align=center border=0 cellPadding=10 id=ExtraFiles_Cell
|
|
width=600>
|
|
<TBODY>
|
|
<TR>
|
|
<TD bgColor=#d0d0d0><!--
|
|
|
|
DirectX team section
|
|
|
|
-->
|
|
<div class=Instructions id=DirectXInfo
|
|
style="DISPLAY: none; MARGIN-LEFT: 15px">
|
|
<div id=dxTitle><b
|
|
><id id=dxfoo>DirectX
|
|
Diagnostics</ID></B></DIV><br>
|
|
<div class=Instructions id=DirectXInfoP1
|
|
style="MARGIN-LEFT: 30px">In order to
|
|
help identify and resolve the problem we need to collect some
|
|
additional information using the DirectX Diagnostics tool.
|
|
</DIV><br>
|
|
<div class=Instructions id=DirectXInfoP2
|
|
style="MARGIN-LEFT: 30px">To execute this
|
|
tool please choose "Run" from the start menu and type
|
|
"DXDiag". Once the DirectX Diagnostic Tool is running, choose
|
|
"Save All Information". Save the file to a filename <b
|
|
>dxdiag.txt</B> in a location that you can
|
|
find. </DIV><br>
|
|
<div class=Instructions id=DirectXInfoP3
|
|
style="MARGIN-LEFT: 30px">Then in the <b
|
|
>Additional files to collect</B> area of
|
|
the bug report, please browse to that directory and select
|
|
this file to add. This file will now be uploaded along with
|
|
the bug report. </DIV><br>
|
|
<div class=Instructions id=DirectXInfoP4
|
|
style="MARGIN-LEFT: 30px">Thanks - The
|
|
DirectX Team </DIV><br></DIV>
|
|
<DIV></DIV><!--
|
|
|
|
System Restore team section
|
|
|
|
-->
|
|
<div class=Instructions id=SystemRestoreInfo
|
|
style="DISPLAY: none; MARGIN-LEFT: 15px">
|
|
<div id=srTitle><b
|
|
><id id=srfoo>System
|
|
Restore Diagnostics</ID></B></DIV><br>
|
|
<div class=Instructions id=srInfoP1 style="MARGIN-LEFT: 30px"
|
|
>In order to get more information to help
|
|
identify and resolve the problem please go to the
|
|
%windir%/system/restore directory (%windir% is your windows
|
|
directory) and execute the Cabbit tool with the following
|
|
syntax: </DIV><pre id=cabbitCommand style="MARGIN-LEFT: 30px">cabbit srdata.cab</PRE>
|
|
<div class=Instructions id=srInfoP2 style="MARGIN-LEFT: 30px"
|
|
>cabbit.exe will generate a cabfile
|
|
containing system restore log files and name it srdata.cab
|
|
</DIV><br>
|
|
<div class=Instructions id=srInfoP3 style="MARGIN-LEFT: 30px"
|
|
>Then in the <b
|
|
>Additional files to collect</B> area of
|
|
the bug report, please browse to the %windir%/system/restore
|
|
directory and select this file to add. This file will now be
|
|
uploaded along with the bug report. </DIV><br
|
|
>
|
|
<div class=Instructions id=srInfoP4 style="MARGIN-LEFT: 30px"
|
|
>Thanks - The PC Health Team
|
|
</DIV></DIV></TD></TR></TBODY></TABLE><br>
|
|
<div class=Instructions id=AdditionalFilesInfo
|
|
>Additional files to be submitted with the bug
|
|
report can be selected using the <B>Browse</B>
|
|
button and added to the list of files submitted using the <B
|
|
>Add File</B> button. </DIV><br
|
|
></TD></TR><!--
|
|
|
|
Additional files to collect
|
|
|
|
-->
|
|
<TR>
|
|
<TD align=right id=AdditionalFiles_Cell3 vAlign=top
|
|
>
|
|
<div class=ItemHeadingSmall id=AdditionalFiles_Text
|
|
>Additional files to collect:</DIV></TD>
|
|
<TD><INPUT class=PlainTextSmall
|
|
id=AdditionalFile name=AdditionalFile size=50 style="WIDTH: 300pt"
|
|
type=file> <br>
|
|
<DIV align=left class=stlList id=AdditionalFilesScroll_List
|
|
>
|
|
<UL id=AdditionalFilesScroll_List_UL
|
|
onclick=javascript:LIST_selectItem(this);
|
|
onkeypress=javascript:LIST_selectItemKey(this);
|
|
onselectstart=javascript:LIST_fnOnSelectStart(); tabIndex=-1
|
|
></UL></DIV><BR><BUTTON
|
|
accessKey=A id=AddFile name=AddFile
|
|
onclick=BRP_ListAddFileForUpload()><U
|
|
>A</U>dd File</BUTTON><BUTTON accessKey=R
|
|
id=RemoveFile name=RemoveFile onclick=BRP_ListRemoveFileForUpload()
|
|
><U>R</U>emove
|
|
File</BUTTON><br></TD></TR></TBODY></TABLE><!--
|
|
|
|
Section IV
|
|
|
|
-->
|
|
<TABLE border=0 id=BugReportingSubmittingTable>
|
|
<TBODY>
|
|
<TR>
|
|
<TD colSpan=2>
|
|
<HR>
|
|
<BR>
|
|
<TABLE border=0>
|
|
<TBODY>
|
|
<TR>
|
|
<TD><IMG alt="Star graphic" border=0 id=IMG_Star_Bullet5 src="star.gif" ></TD>
|
|
<TD class=StepHeading id=Section5_Heading
|
|
>Section IV: Submitting Bug
|
|
Report</TD></TR></TBODY></TABLE><BR>
|
|
<div class=Instructions id=SubmitInstructions_Text
|
|
>When you click <b
|
|
>Submit</B> and <B>Submit
|
|
to Microsoft now</B> is checked, the bug information will be
|
|
uploaded to Microsoft's servers. To cancel the bug report click <b
|
|
>Cancel</B> anytime during the submission
|
|
process. To keep a local copy of the files on your disk select the
|
|
option to <B>Save copy to disk</B> and specify
|
|
a filename.<br><br>Please
|
|
make sure you are connected to the Internet before submitting a bug
|
|
report to Microsoft.<br><br
|
|
></DIV>
|
|
<TABLE border=0>
|
|
<TBODY>
|
|
<TR>
|
|
<TD><IMG alt="Star graphic" border=0 id=IMG_Star_Bullet4 src="star.gif" ></TD>
|
|
<TD class=ItemHeadingSmall id=Section4_Heading
|
|
>Current Status:</TD></TR>
|
|
<TR>
|
|
<TD> </TD>
|
|
<TD>
|
|
<DIV class=ItemHeadingSmall id=Status
|
|
name="Status"> </DIV></TD></TR></TBODY></TABLE>
|
|
<TABLE border=0 width="100%">
|
|
<TBODY>
|
|
<TR>
|
|
<TD class=ItemHeadingSmall id=Progress width="20%"
|
|
name="Progress"> </TD>
|
|
<TD class=ItemHeadingSmall id=ProgressText
|
|
name="ProgressText"> </TD></TR></TBODY></TABLE>
|
|
<TABLE border=0 cellPadding=10>
|
|
<TBODY>
|
|
<TR>
|
|
<TD id=SubmitButton_Cell vAlign=top
|
|
><BUTTON accessKey=S class=stlButtonBig
|
|
id=Submit name=Submit onclick=StartProcessing()
|
|
><U
|
|
>S</U>ubmit</BUTTON><BUTTON accessKey=C
|
|
class=stlButtonBig disabled id=Cancel name=Cancel
|
|
onclick=CancelUpload()><U
|
|
>C</U>ancel</BUTTON> </TD>
|
|
<TD vAlign=top><input CHECKED
|
|
id=SubmitIncidentNow name=SubmitIncidentNow type=checkbox
|
|
> <LABEL for=SubmitIncidentNow
|
|
id=SubmitNow_Label style="CURSOR: hand"
|
|
>Submit to Microsoft now</LABEL> <BR
|
|
><input id=SaveIncidentNow
|
|
name=SaveIncidentNow type=checkbox>
|
|
<LABEL for=SaveIncidentNow id=SaveNow_Label
|
|
style="CURSOR: hand">Save copy to
|
|
disk</LABEL> <BR><BR>
|
|
<TABLE id=SaveToDiskTable>
|
|
<TBODY>
|
|
<TR>
|
|
<TD align=right id=FileNameLocal_Cell vAlign=top
|
|
>
|
|
<DIV class=ItemHeadingSmall id=Section5_SaveInfoText
|
|
>Filename : </DIV></TD>
|
|
<TD id=FileNameLocalName_Cell vAlign=top
|
|
>
|
|
<DIV class=ItemHeadingSmall id=Section5_SaveInfoFile
|
|
><INPUT class=PlainTextSmall dir=ltr
|
|
id=IncidentFilename name=IncidentFilename
|
|
onblur=CorrectNameCAB() size=50>
|
|
</DIV></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></FORM></DIV><!--
|
|
|
|
The thank you part of the bug reporting page after a bug has been reported
|
|
|
|
-->
|
|
<DIV id=spanThankYou style="DISPLAY: none">
|
|
<TABLE border=0 borderColor=#ff0000 cellPadding=0 cellSpacing=0 width=600>
|
|
<TBODY>
|
|
<TR>
|
|
<TD align=left id=ThankYou_Heading_Data_Cell vAlign=center
|
|
>
|
|
<div class=PageHeading id=ThankYou_Page_Heading_Text
|
|
>Windows Whistler Beta team.</DIV><br
|
|
><br></TD></TR>
|
|
<TR>
|
|
<TD><BR>
|
|
<p class=PlainText id=ThankYou_Paragraph>Thank you
|
|
for submitting a bug report. </P><BR>
|
|
<TABLE border=0>
|
|
<TBODY>
|
|
<TR>
|
|
<TD class=PlainTextSmall id=BRP_IncidentTimeText
|
|
>Submit Time</TD>
|
|
<TD class=PlainTextSmall id=BRP_IncidentTime
|
|
> </TD></TR>
|
|
<TR>
|
|
<TD class=PlainTextSmall id=BRP_TrackingNoText
|
|
>Upload Identifier</TD>
|
|
<TD class=PlainTextSmall dir=ltr id=BRP_TrackingNo
|
|
></TD></TR></TBODY></TABLE> <id id="ThisNumberOnly">(This number is only for troubleshooting purposes and does not need to be retained.)</id> <BR><!--
|
|
<p id="Helpcenter_Return_Link"><a href="hcp://system/Mars_Contents.htm"><id id="ReturnToMain">Return to the main helpcenter page</id></a></p>
|
|
-->
|
|
|
|
<p><a href="hcp://CN=Microsoft%20Corporation,L=Redmond,S=Washington,C=US/bugrep.htm"><id id="FileAnother">File Another Bug</id></A></p>
|
|
|
|
</TD></TR></TBODY></TABLE></DIV><!--
|
|
|
|
Footer
|
|
|
|
--><BR><BR>
|
|
<TABLE>
|
|
<TBODY>
|
|
<TR>
|
|
<TD>
|
|
<div class=PlainTextSmall id=BRP_VersionText
|
|
></DIV></TD></TR>
|
|
<TR>
|
|
<TD><BR>
|
|
<div class=PlainTextSmall>(c) <a
|
|
href="http://www.microsoft.com/misc/cpyright.htm"
|
|
><id id="Copyright">2000 Microsoft Corporation. All rights reserved. Terms of use.</id></A></DIV></TD></TR></TBODY></TABLE><BR><BR><BR>
|
|
<!--
|
|
|
|
End of document
|
|
|
|
-->
|
|
|
|
</BODY>
|
|
</HTML>
|