windows-nt/Source/XPSP1/NT/windows/appcompat/compatui/test/compatmode.htm
2020-09-26 16:20:57 +08:00

2118 lines
71 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<OBJECT ID=pchealth classid=CLSID:FC7D9E02-3F9E-11d3-93C0-00C04F72DAF7></OBJECT>
<TITLE>Start Application in Compatibility Mode</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=windows-1252">
<META HTTP-EQUIV=PICS-Label CONTENT='(PICS-1.1 "http://www.rsac.org/ratingsv01.html" l comment "RSACi North America Server" by "inet@microsoft.com" r (n 0 s 0 v 0 l 0))'>
<META HTTP-EQUIV="MSThemeCompatible" CONTENT="Yes">
<META content=en-us http-equiv=Content-Language>
<LINK ID=Stylesheet_Ref0 href="hcp://system/css/shared.css" rel=STYLESHEET type=text/css>
<LINK ID=Stylesheet_Ref1 href="hcp://system/css/Behaviors.css" rel=STYLESHEET type=text/css>
<LINK ID=Stylesheet_Ref2 href="hcp://system/css/Layout.css" rel=STYLESHEET type=text/css>
<SCRIPT language="javascript">
<!--
var g_sApplicationLocation; // folder where the app is to be found
var g_sApplicationDisplayName; // display (friendly) name for an application
var g_sApplication; // application to run(full path)
var g_sPersistPath; // persist path for this item
var g_sCompatLayer; // layer to run (string)
var g_sLayerDescription;
var g_sCmdLine;
var g_nPage = 0; // current page
var g_nPages = 10;
var g_nStartPage = 0;
var g_rgPages = new Array(g_nPages);
var g_shell = new ActiveXObject("Wscript.Shell");
var g_fso = new ActiveXObject("Scripting.FileSystemObject");
var g_bProgramsPopulated = false;
var g_bAppBrowseProgsInitialized = false;
var g_bProgListSelect = false;
var g_util = new ActiveXObject("CompatUI.Util");
var g_ProgramSelectMethod; // will be
var g_upload = null; // global upload object
var g_UnknownLayers; // unknown layers for the item
g_rgPages[0] = 'Intro';
g_rgPages[1] = 'AppSelectMethod';
g_rgPages[2] = 'AppProgramList';
g_rgPages[3] = 'AppBrowseProgs';
g_rgPages[4] = 'FixesLayers';
g_rgPages[5] = 'FixesOther';
g_rgPages[6] = 'Run';
g_rgPages[7] = 'Update';
g_rgPages[8] = 'CompatibilityData';
g_rgPages[9] = 'CompleteWizard';
var g_cIntroPage = 0;
var g_cAppPage = 1;
var g_cAppProgramListPage = 2;
var g_cAppBrowseProgsPage = 3;
var g_cFixesLayersPage = 4;
var g_cFixesOtherPage = 5;
var g_cRunPage = 6;
var g_cUpdatePage = 7;
var g_cCompatibilityDataPage = 8;
var g_cCompleteWizardPage = 9;
var g_cSelectFromList = 0;
var g_cSelectRunFromCD = 1;
var g_cSelectBrowse = 2;
//////////////////////////////////////////////////////////////////////////////////////
//
// Localization
//
var L_strBtnBackCaption_Button = '&nbsp;&lt;&nbsp;<u>B</u>ack&nbsp;'; // this is the caption for Back button : ' < Back '
var L_strBtnNextCaption_Button = '&nbsp;N<u>e</u>xt&nbsp;&gt;&nbsp;'; // this is the caption for Next button : ' Next > '
var L_strBtnFinish_Button = '&nbsp;<u>F</u>inish&nbsp;'; // this is the caption for Finish button
var L_strStopBtnCaption_Button = '&nbsp;Sto<u>p</u>&nbsp;';
var L_strRefreshBtnCaption_Button = '&nbsp;<u>R</u>efresh&nbsp;';
var L_strCancelBtnCaption_Button = '&nbsp;Cancel&nbsp;';
var L_strBrowseBtnCaption_Button = 'Bro<u>w</u>se';
var L_strPage2Accelerators_Text = 'RSPEB'; // Attention, localizers: this parameter should be localized and match accelerators on this page
// R = Refresh S = Select P - stoP E - nExt B - Back -->
// see page 2 below for Select, all the others have to match the buttons above
var L_strPage3Accelerators_Text = 'YEB'; // Attention localizers: this parameter should be localized and match accelerators on this page
// Y = tYpe E - nExt B - Back
// except for the browse button
var L_strCompatSettingsAdjusted_Text = 'You have successfully adjusted the compatibility settings for this program.';
var L_strCompatSettingsNotAdjusted_Text= 'Compatibility settings were not changed for any programs.';
var L_strBrowseFilter_Text = 'Program files (*.exe;*.com;*.pif;*.cmd;*.bat;*.lnk)|*.exe;*.com;*.pif;*.cmd;*.bat;*.lnk|All files (*.*)|*.*';
var L_strBrowseCaption_DialogTitle = 'Please Select Application';
var L_rgExcludeFiles_FileName = new Array('%ProgramFiles%\\Windows NT\\hypertrm.exe',
'%programfiles%\\msn\\msncorefiles\\msn6.exe',
'%programfiles%\\messenger\\msmsgs.exe');
var L_strCompatModeRemovableMedia_Text = '<b>Warning:</b> &nbsp;&nbsp; Compatibility mode cannot be set on this program. &nbsp; The selected program is on the network or a removable media device.';
var L_strCompatModePartOfOS_Text = '<b>Warning:</b> &nbsp;&nbsp; Compatibility Mode cannot be set on this program. &nbsp; Selected program is part of the Operating System.';
var L_strCompatModeNotExe_Text = '<b>Warning:</b> &nbsp;&nbsp; Compatibility Mode cannot be set on this object. &nbsp; Selected object is not a program executable file.';
var L_strFileOnTheNet_Text = '<br>Warning: this file is on removable media or on the network';
var L_strNoCompatSettings_Text = 'No compatibility settings were selected.';
var L_strRetryCD_Message = 'Wizard could not locate programs on your CD\nClick OK to retry, Cancel to try and locate the program manually';
var L_strSpecifyValidApp_Message = 'Please specify a valid program';
var L_strChooseProgram_Message = 'Please choose a program from the list';
var L_strErrorUpdatingShortcut_ErrorMessage = 'Error Updating application shortcut for ';
var L_strAppNotFound_ErrorMessage = 'Target Application Not Found!\n\nThe file path is invalid: ';
var L_strEnsureExist_ErrorMessage = '\n\nEnsure that you have entered the full and correct path to the target application.\n';
var L_strMustValid_ErrorMessage = 'The application path must point to a valid Program or Shortcut file.';
var L_strErrorStartingApp_ErrorMessage = 'Error starting program:\n\n';
var L_rgSetupPrograms_FileName = new Array(4); // this array contains the names of setup programs
L_rgSetupPrograms_FileName[0] = 'setup.cmd'; // this array should not be touched but some more
L_rgSetupPrograms_FileName[1] = 'setup.bat'; // (localized) entries may be added
L_rgSetupPrograms_FileName[2] = 'setup.exe';
L_rgSetupPrograms_FileName[3] = 'install.exe';
///////////////////////////////////////////////////////////////////////////////////
//
// Initialize global objects (compatUI)
//
function InitCompatUIObjects() {
var BrowseProgs = document.all['BrowseProgs'];
var ProgList = document.all['SelectProgs'];
var sExclude = '';
var i;
for (i = 0; i < L_rgExcludeFiles_FileName.length; ++i) {
if (i > 0) {
sExclude += ';';
}
sExclude += L_rgExcludeFiles_FileName[i];
}
ProgList.ExcludeFiles = sExclude;
ProgList.ExternAccel = L_strPage2Accelerators_Text;
BrowseProgs.ExternAccel = L_strPage3Accelerators_Text;
BrowseProgs.BrowseBtnCaption = L_strBrowseBtnCaption_Button;
BrowseProgs.accessKey = GetAccessKeyFromCaption(L_strBrowseBtnCaption_Button);
}
function checkRadio(ctlName, choiceValue) {
var collection;
var i;
collection = document.all[ctlName];
for (i = 0; i < collection.length; i++) {
if (collection[i].value.toUpperCase() == choiceValue.toUpperCase()) {
collection[i].checked = true;
return;
}
}
}
function getRadioText(ctlName, selValue) {
var collection;
var i;
var lblName;
var vLabel;
collection = document.all[ctlName];
for (i = 0; i < collection.length; i++) {
if (collection[i].value.toUpperCase() == selValue.toUpperCase()) {
lblName = 'lbl' + collection[i].value;
vLabel = document.all[lblName];
return(vLabel.innerText);
}
}
}
function getRadioValue(ctlName) {
var collection;
var i;
collection = document.all[ctlName];
for (i = 0; i < collection.length; i++) {
if (collection[i].checked) {
return(collection[i].value);
}
}
}
function checkCheckbox(ctlName, bCheck) {
var ctl = document.all[ctlName];
ctl.checked = bCheck;
}
function getCheckValue(ctlName) {
var ctl = document.all[ctlName];
if (ctl.checked == true) {
return ctl.value;
}
return null;
}
function getCheckText(selValue) {
var lblName = 'lbl' + selValue;
var vLabel = document.all[lblName];
if (vLabel != null) {
return vLabel.innerText;
}
//
// this means we have no text -- "unknown" value
//
return '(' + selValue + ')';
}
function ShowDiv(divName, bShow) {
var div = document.all[divName];
if (bShow) {
// alert('Show ' + divName);
div.style.display = '';
} else {
// alert('Hide ' + divName);
div.style.display = 'none';
}
}
function InitPage() {
for (i = 0; i < g_rgPages.length; ++i) {
ShowDiv(g_rgPages[i], g_nStartPage == i);
}
// init common buttons (cancel)
var btnCancel = document.all('btnCancel');
btnCancel.innerHTML = L_strCancelBtnCaption_Button;
InitCompatUIObjects();
Intro_InitPage();
// init global vars - no further init
}
function GetAccessKeyFromCaption(sCaption) {
var sUTag = '<u>';
var sUCTag = '</u>';
var sAccessKey = '';
var sCaplc = sCaption.toLowerCase();
var ixU = sCaplc.indexOf(sUTag);
if (ixU < 0) {
return sAccessKey;
}
var ixCU = sCaplc.indexOf(sUCTag, ixU);
if (ixCU < 0) {
return sAccessKey;
}
// get the string between the tags
sAccessKey = sCaplc.substring(ixU + sUTag.length, ixCU);
sAccessKey.toUpperCase();
return sAccessKey;
}
function InitNavButtons(bBackEnabled, sNextButtonValue) {
var frmNav = document.forms('frmNav');
var btnBack = frmNav('btnBack');
btnBack.innerHTML = L_strBtnBackCaption_Button;
btnBack.accessKey = GetAccessKeyFromCaption(L_strBtnBackCaption_Button);
btnBack.disabled = !bBackEnabled;
var btnNext = frmNav('btnNext');
btnNext.disabled = false;
if (null != sNextButtonValue) {
btnNext.innerHTML = sNextButtonValue;
} else {
btnNext.innerHTML = L_strBtnNextCaption_Button;
}
btnNext.accessKey = GetAccessKeyFromCaption(btnNext.innerHTML);
btnNext.focus();
}
//
// selected flags
//
var OFN_HIDEREADONLY = 0x00000004;
var OFN_PATHMUSTEXIST = 0x00000800;
var OFN_FILEMUSTEXIST = 0x00001000;
var OFN_EXPLORER = 0x00080000; // new look commdlg
var OFN_NODEREFERENCELINKS = 0x00100000; // prevents a link from being cracked
var OFN_ENABLESIZING = 0x00800000;
var OFN_FORCESHOWHIDDEN = 0x10000000; // Show All files including System and hidden files
var g_ofnFlags = OFN_HIDEREADONLY|
OFN_PATHMUSTEXIST|
OFN_FILEMUSTEXIST|
OFN_NODEREFERENCELINKS;
//
// ====================== Page Init Code ====================================
//
//
function Intro_InitPage(nPageFrom) {
InitNavButtons(false, null);
}
function ProgListAction() {
var btnAction = document.all['btnProgListAction'];
switch(btnAction.name) {
case 'Cancel':
CancelProgScan();
break;
case 'Scan':
RefreshProgs();
break;
}
}
function SetProglistAction(proglistAction) {
var btnAction = document.all['btnProgListAction'];
btnAction.name = proglistAction;
switch(proglistAction) {
case 'Cancel':
btnAction.innerHTML = L_strStopBtnCaption_Button;
break;
case 'Scan':
btnAction.innerHTML = L_strRefreshBtnCaption_Button;
break;
}
btnAction.accessKey = GetAccessKeyFromCaption(btnAction.innerHTML);
}
function BlockNextButton(bBlock) {
var frmNav = document.forms('frmNav');
var btnNext = frmNav('btnNext');
var btnBack = frmNav('btnBack');
if (bBlock) {
btnBack.focus();
}
btnNext.disabled = bBlock; // bummer, next is disabled
if (!bBlock) {
btnNext.focus();
}
}
function AppProgramList_InitPage(nPageFrom) {
var SelectProgs = document.all['SelectProgs'];
var BrowseProgs = document.all['BrowseProgs'];
BrowseProgs.Enabled = false;
BrowseProgs.Valid = false;
SelectProgs.Enabled = true;
SelectProgs.Valid = true;
InitNavButtons(true, null);
if (!g_bProgramsPopulated) {
BlockNextButton(true);
SetProglistAction('Cancel');
} else {
SetProglistAction('Scan');
}
}
function CancelProgScan() {
var SelectProgs = document.all['SelectProgs'];
SelectProgs.CancelPopulateList();
}
function RefreshProgs() {
var SelectProgs = document.all['SelectProgs'];
var btnNext = document.all['btnNext'];
BlockNextButton(true);
SetProglistAction('Cancel');
SelectProgs.PopulateList();
}
function AppBrowseProgs_InitPage(nPageFrom) {
var BrowseProgs = document.all['BrowseProgs'];
var oShell = new ActiveXObject('Shell.Application');
// DEBUGDEBUG
var SelectProgs = document.all['SelectProgs'];
SelectProgs.Enabled = false;
SelectProgs.Valid = false;
BrowseProgs.Enabled = true;
BrowseProgs.Valid = true;
// localization
BrowseProgs.BrowseFilter = L_strBrowseFilter_Text;
BrowseProgs.BrowseFlags = g_ofnFlags;
BrowseProgs.BrowseTitle = L_strBrowseCaption_DialogTitle;
var shFolder = oShell.Namespace(0x2); // ssPrograms, Folder2 object
BrowseProgs.BrowseInitialDirectory = shFolder.Self.Path; // convert to folder item and get path
InitNavButtons(true, null);
}
function Page_NavigateComplete(nPageTo) {
if (nPageTo == g_cAppBrowseProgsPage) {
if (g_bAppBrowseProgsInitialized) {
OnBrowseProgsReady();
}
}
}
function OnBrowseProgsReady() {
var BrowseProgs = document.all['BrowseProgs'];
BrowseProgs.focus();
}
function AppSelectMethod_InitPage(nPageFrom) {
InitNavButtons(true, null);
}
function FixesLayers_InitPage(nPageFrom) {
var sCompatLayer;
if (nPageFrom < g_cFixesLayersPage) { // we want to find whether it is a motion forward or backwards
sCompatLayer = GetApplicationLayer();
ParseLayers(sCompatLayer);
}
var bShowLUA = g_util.CheckAdminPrivileges();
var chkLUA = document.all['chkSimAdmin'];
chkLUA.style.display = bShowLUA ? '' : 'none';
var lblLUA = document.all['lblLUA'];
lblLUA.style.display = bShowLUA ? '' : 'none';
InitNavButtons(true, null);
}
function CompatibilityData_InitPage(nPageFrom) {
ClearUploadInformation();
g_upload = new ActiveXObject("CompatUI.Upload");
//
// prepare for an upload
//
PrepareUploadInformation(g_upload);
InitNavButtons(true, null);
//
// make sure yes and no -- neither is checked
//
document.all['chkUploadInfo' ].checked = false;
document.all['chkNoUploadInfo'].checked = false;
//
// disable next button for now please
//
BlockNextButton(true);
}
function ClearUploadInformation() {
if (g_upload != null) {
g_upload.DeleteTempFiles();
delete g_upload;
g_upload = null;
}
}
function SendCompatibilityReport(bSend) {
if (g_upload == null) {
return;
}
if (bSend) {
g_upload.SendReport();
}
ClearUploadInformation();
}
function ViewTempFileList() {
g_upload.ShowTempFiles();
}
function CompleteWizard_InitPage(nPageFrom) {
//
// see if our app was system
//
var UpdateAction = getRadioValue('UpdateShortcut');
var divCompatSettings = document.all['divCompatSettings'];
var sSettings;
if (UpdateAction == 'Yes') {
sSettings = L_strCompatSettingsAdjusted_Text;
} else {
sSettings = L_strCompatSettingsNotAdjusted_Text;
}
divCompatSettings.innerHTML = sSettings;
InitNavButtons(true, L_strBtnFinish_Button);
var btnNext = document.all['btnNext'];
btnNext.accessKey = 'F';
}
//
// Read autorun.inf and be happy
//
// returns dictionary object with all the relevant information
//
// autorunToken may be anything that comes with autorun.xxx
function ReadAutorunContent(ts, autorunToken) {
var line;
var re; // regexpression
var rr; // result of a match
var dictAutorun = null;
var ReadingContent = false;
while (!ts.AtEndOfStream) {
line = ts.ReadLine();
// look for 'open' token
// parse the freaking line
re = /\[\s*autorun(\.\S+){0,}\s*\]/i
rr = line.match(re);
if (rr != null) {
// see if this is autorun.architecture
if (ReadingContent) {
break;
}
if (rr.length > 1 && autorunToken != null) {
autorunToken.toLowerCase();
rr[1].toLowerCase();
if (rr[1] != autorunToken) {
continue;
}
}
dictAutorun = new ActiveXObject("Scripting.Dictionary");
ReadingContent = true;
} else if (dictAutorun != null) {
re = /\s*(\w+)\s*=\s*(.+)/i
rr = line.match(re);
if (rr != null && rr.length >= 3 && !dictAutorun.Exists(rr[1])) {
//
// is this a 2 part match?
//
rr[1].toLowerCase();
dictAutorun.Add(rr[1], rr[2]);
}
}
}
return dictAutorun;
}
function ReadAutorunInf(driveName) {
var sAutorun = driveName + 'Autorun.inf';
var f = null;
var ts;
var dictAutorun;
var autorunToken;
try {
if (g_fso.FileExists(sAutorun)) {
f = g_fso.GetFile(sAutorun);
}
} catch (e) {
f = null;
}
if (f == null) {
return null;
}
autorunToken = '.' + g_shell.Environment.Item('PROCESSOR_ARCHITECTURE');
while(true) {
ts = f.OpenAsTextStream(1); // open for reading
if (ts == null) {
return null;
}
dictAutorun = ReadAutorunContent(ts, autorunToken);
ts.Close();
if (dictAutorun != null) { // if we have the dictionary -- get out now
return dictAutorun;
}
if (autorunToken != null) { // if we have tried architecture-specific item, try generic one now
autorunToken = null;
} else {
// we have tried generic -- found nothing
return null;
}
}
return dictAutorun;
}
function removeParams(sPath) {
var sPurePath;
try {
sPurePath = g_util.RemoveArgs(sPath);
} catch(e) {
sPurePath = sPath;
}
return sPurePath;
}
//
// reads and sets globals for apphelp's benefit
//
//
function GetAutorunInformation(driveName, dictAutorun, IsAutorun) {
var sApplication = null;
var sApplicationDisplayName = null;
var sApplicationPath = null;
var drive;
if (dictAutorun.Exists('label')) {
sApplicationDisplayName = dictAutorun.Item('label');
}
if (sApplicationDisplayName == null) {
drive = g_fso.GetDrive(driveName);
sApplicationDisplayName = drive.VolumeName + ' (' + driveName + ')';
}
if (dictAutorun.Exists('open')) {
sApplication = dictAutorun.Item('open');
} else {
//
// no open verb -- we will try this - but what do we do with this item?
//
if (dictAutorun.Exists('shellexecute')) {
sApplication = dictAutorun.Item('shellexecute');
if (sApplication != null && sApplication.length) {
//
// BUGBUG - remove before we ship
//
// This case was never found in our testing
}
}
}
// convert sApplication into a friendly name
// see if sApplication has a friendly path
if (sApplication == null || !sApplication.length) {
return false;
}
//
// sApplicationLocation
//
if (sApplication.substr(0, 2) == '\\\\') {
// this is UNC, do not touch
;
} else if (sApplication.substr(1, 1) == ':') {
// has a drive name, do not touch
;
} else if (sApplication.substr(0, 1) == '%') {
// has env var in it -- do not touch
;
} else if (sApplication.substr(0, 1) == '\\') {
// prepend
sApplication = driveName.substr(0, 2) + sApplication;
} else {
sApplication = driveName + sApplication;
}
// sanitize parameters
sApplicationPath = removeParams(sApplication);
//
// make sure that whatever chemistry we did here -- it worked
//
if (!validateFile(sApplicationPath)) {
return false;
}
if (IsAutorun) {
g_sApplicationLocation = 'AutoRun (' + driveName + ')';
} else {
g_sApplicationLocation = 'Setup Application (' + driveName + ')';
}
g_sApplication = sApplication;
g_sApplicationDisplayName = sApplicationDisplayName;
g_sPersistPath = null;
g_sCmdLine = g_sApplication;
return true;
}
function ScanForAutorun() {
var driveLetter = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var drive = null;
var dictAutorun = null;
var sAutorun;
var bRet = false;
for (i = 0; i < 26; ++i) {
driveName = driveLetter.charAt(i) + ':\\';
if (!g_fso.DriveExists(driveName)) {
continue;
}
drive = g_fso.GetDrive(driveName);
if (drive == null || drive.DriveType != 4 || !drive.IsReady) {
continue;
}
dictAutorun = ReadAutorunInf(driveName);
if (dictAutorun != null) {
break;
}
}
if (dictAutorun == null) {
return false;
}
//
// see what we have learnt
//
bRet = GetAutorunInformation(driveName, dictAutorun, true);
delete dictAutorun;
return bRet;
}
function Update_InitPage(nPageFrom) {
var frmUpdate = document.forms('frmUpdate');
var divMedia = document.all['MediaWarning'];
var drive;
var driveName;
var sAppPath;
var bUpdateDisabled = false;
var optNoUpdate = document.all['chkNo'];
sAppPath = ExpandSpecialFolders(g_sApplication);
driveName = g_fso.GetDriveName(sAppPath);
drive = g_fso.GetDrive(driveName);
if (drive.DriveType == 1 || drive.DriveType == 3) {
//
// removable media or the network - disable both the check and the label
//
divMedia.innerHTML = L_strCompatModeRemovableMedia_Text;
bUpdateDisabled = true;
} else if (g_util.IsSystemTarget(g_sApplication)){
divMedia.innerHTML = L_strCompatModePartOfOS_Text;
bUpdateDisabled = true;
} else if (!g_util.IsExecutableFile(g_sApplication)) {
divMedia.innerHTML = L_strCompatModeNotExe_Text;
bUpdateDisabled = true;
}
if (bUpdateDisabled) {
optNoUpdate.checked = true;
divMedia.style.display = '';
}
frmUpdate('chkYes').disabled = bUpdateDisabled;
document.all['lblYes'].disabled = bUpdateDisabled;
divMedia.style.display = bUpdateDisabled ? '' : 'none';
InitNavButtons(true, null);
}
function Run_InitPage(nPageFrom) {
var divLayer;
var divApp;
var shtml = '';
var sAppName;
divApp = document.all['divTargetApp'];
divLayer = document.all['divCompatLayer'];
//
// what goes as an app name?
//
if (g_sApplicationDisplayName != null) {
shtml = '<label title=\"' + g_sApplication +'\">' + g_sApplicationDisplayName + '</label>';
} else {
shtml = g_sApplication;
}
// if (g_sApplicationDisplayName != null) {
// sAppName = g_sApplicationDisplayName;
// } else {
// sAppName = g_sApplication;
// }
// shtml = sAppName;
// if (g_sApplicationLocation != null) {
// shtml += '<br>' + g_sApplicationLocation;
// }
// if (g_sApplicationDisplayName != null) {
// shtml += '<br>' + g_sApplication;
// }
divApp.innerHTML = shtml;
divApp.style.display = '';
// also check drive type, do warning if net or cd-r
var drive;
var driveName;
driveName = g_fso.GetDriveName(g_sApplication);
drive = g_fso.GetDrive(driveName);
if (drive.DriveType == 1 || drive.DriveType == 3) {
divApp.innerHTML += L_strFileOnTheNet_Text;
}
if (g_sLayerDescription == null || g_sLayerDescription.length == 0) {
divLayer.innerHTML = L_strNoCompatSettings_Text;
} else {
divLayer.innerHTML = g_sLayerDescription;
}
InitNavButtons(true, null);
}
function validateFile(sFileName) {
if (sFileName == null) {
return false;
}
sPath = ExpandSpecialFolders(sFileName);
// sPath = GetRealPathName(sPath);
return g_fso.FileExists(sPath);
}
function NavigateToPage(nPage) {
var frmNav = document.forms('frmNav');
//
// if we are moving beyond the last or before the first -- navigate to
// the first page
//
if (nPage < 0 || nPage >= g_nPages) {
nPage = 0;
}
if (eval('typeof(' + g_rgPages[nPage] + '_InitPage)') == 'function') {
eval(g_rgPages[nPage] + '_InitPage(' + g_nPage + ')');
}
// show the divs
ShowDiv(g_rgPages[g_nPage], false);
g_nPage = nPage;
ShowDiv(g_rgPages[g_nPage], true);
if (eval('typeof(Page_NavigateComplete)') == 'function') {
eval('Page_NavigateComplete(' + g_nPage + ')');
}
}
function CheckForSetupProgsOnCD() {
var driveLetter = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var drive = null;
var dictAutorun = null;
var sAutorun;
var dictAutorun = null;
var bRet;
var i, j;
var driveName;
var sSetup;
for (i = 0; i < 26; ++i) {
driveName = driveLetter.charAt(i) + ':\\';
if (!g_fso.DriveExists(driveName)) {
continue;
}
drive = g_fso.GetDrive(driveName);
if (drive == null || drive.DriveType != 4 || !drive.IsReady) {
continue;
}
for (j = 0; j < L_rgSetupPrograms_FileName.length; j++) {
sSetup = driveName + L_rgSetupPrograms_FileName[j];
if (!g_fso.FileExists(sSetup)) {
continue;
}
//
// we have an install program
//
var dictAutorun = new ActiveXObject("Scripting.Dictionary");
dictAutorun.Add('open', sSetup);
bRet = GetAutorunInformation(driveName, dictAutorun, false);
delete dictAutorun;
if (bRet) {
return true;
}
}
}
return false;
}
function getAppFromCD() {
var bret;
g_bProgListSelect = false;
bret = ScanForAutorun();
if (!bret) {
bret = CheckForSetupProgsOnCD();
}
return bret;
}
function getBrowseProgsSel() {
var BrowseProgs = document.all['BrowseProgs'];
g_bProgListSelect = false;
g_sApplication = BrowseProgs.FileName;
g_sPersistPath = null;
g_sApplicationDisplayName = null;
g_sApplicationLocation = null;
g_sCmdLine = g_sApplication;
// now validate
//
return validateFile(g_sApplication);
}
function getProgListSel() {
var SelectProgs = document.all['SelectProgs'];
SelectProgs.GetSelectedItem();
g_sApplicationDisplayName = SelectProgs.SelectionName;
if (g_sApplicationDisplayName == null) {
return false;
}
g_sApplicationLocation = SelectProgs.GetSelectionInformation(1); // folder
g_sApplication = SelectProgs.GetSelectionInformation(4); // we will run this
g_sPersistPath = SelectProgs.GetSelectionInformation(2); // path that we shall persist
g_sCmdLine = SelectProgs.GetSelectionInformation(3);
g_bProgListSelect = true;
// validate
return validateFile(g_sPersistPath);
}
function addLayerInfo(sCompatLayer) {
if (g_sCompatLayer.length) {
g_sCompatLayer += ' ';
}
g_sCompatLayer += sCompatLayer;
if (g_sLayerDescription.length) {
g_sLayerDescription += '<br>';
}
g_sLayerDescription += getCheckText(sCompatLayer);
}
function getLayerSelection() {
g_sCompatLayer = '';
g_sLayerDescription = '';
var sRadioLayer = 'layer';
var sCompatLayer;
//
// emulation mode
//
sCompatLayer = getRadioValue(sRadioLayer);
if (sCompatLayer != 'None') {
g_sCompatLayer = sCompatLayer;
g_sLayerDescription = getRadioText(sRadioLayer, g_sCompatLayer);
}
sCompatLayer = getCheckValue('chk256color');
if (sCompatLayer != null) {
addLayerInfo(sCompatLayer);
}
sCompatLayer = getCheckValue('chk640x480');
if (sCompatLayer != null) {
addLayerInfo(sCompatLayer);
}
sCompatLayer = getCheckValue('chkNoThemes');
if (sCompatLayer != null) {
addLayerInfo(sCompatLayer);
}
sCompatLayer = getCheckValue('chkSimAdmin');
if (sCompatLayer != null) {
addLayerInfo(sCompatLayer);
}
if (g_UnknownLayers.length) {
addLayerInfo(g_UnknownLayers);
}
// alert(g_sCompatLayer + '\n' + g_sLayerDescription);
return (g_sCompatLayer.length > 0);
}
function onBtnNext() {
var frmNav = document.forms('frmNav');
// cancel calling action
if (event != null) {
event.returnValue = false;
}
var nPage = g_nPage + 1;
// do what we need to do for this page
switch(g_nPage) {
case g_cIntroPage:
break; // nothing to do for the first page
case g_cAppPage: // App page -- extract application choice
var prog = getRadioValue('progClass');
switch(prog) {
case 'CDProg':
//
// run program from CDROM
//
var bFound;
var bRetry;
do {
bRetry = false;
bFound = getAppFromCD();
if (!bFound) {
bRetry = confirm(L_strRetryCD_Message);
}
} while(bRetry);
if (bFound) {
nPage = g_cFixesLayersPage;
g_ProgramSelectMethod = g_cSelectRunFromCD;
} else {
nPage = g_cAppBrowseProgsPage;
g_ProgramSelectMethod = g_cSelectBrowse;
}
break;
case 'ProgList':
//
// choose the program from the list
//
nPage = g_cAppProgramListPage;
g_ProgramSelectMethod = g_cSelectFromList;
break;
case 'BrowseProg':
nPage = g_cAppBrowseProgsPage;
g_ProgramSelectMethod = g_cSelectBrowse;
break;
}
break;
case g_cAppProgramListPage:
// have we chosen anything here?
//
if (!getProgListSel()) {
alert(L_strChooseProgram_Message);
return;
}
nPage = g_cFixesLayersPage;
break;
case g_cAppBrowseProgsPage:
//
// validate
//
if (!getBrowseProgsSel()) {
alert(L_strSpecifyValidApp_Message);
return;
}
nPage = g_cFixesLayersPage;
break;
case g_cFixesLayersPage: // nothing to do here
break;
case g_cFixesOtherPage: //
getLayerSelection();
break;
case g_cRunPage: // run page (separate button for run, nothing to do here)
// clicked "Next" on run page, run the app
if (!RunApp()) {
switch(g_ProgramSelectMethod) {
case g_cSelectFromList:
nPage = g_cAppProgramListPage;
break;
case g_cSelectBrowse:
nPage = g_cAppBrowseProgsPage;
break;
case g_cSelectRunFromCD:
nPage = g_cAppPage;
break;
}
}
break;
case g_cUpdatePage: // update page
//
//
//
var UpdateAction = getRadioValue('UpdateShortcut');
switch(UpdateAction) {
case 'Yes':
bSuccess = UpdateAppShortcut(true, null);
break;
case 'No':
break;
default:
nPage = g_cFixesLayersPage;
break;
}
//
// we go to the compat report only if this is not a system target ??
//
if (nPage == g_cCompatibilityDataPage) {
if (g_util.IsSystemTarget(g_sApplication) || !g_util.IsExecutableFile(g_sApplication)) {
nPage = g_cCompleteWizardPage;
}
}
break;
case g_cCompatibilityDataPage:
//
// compat data page - send report now
//
var SendReport = getRadioValue("UploadInfo");
SendCompatibilityReport(SendReport == 'Yes');
break;
case g_cCompleteWizardPage:
//
// on complete wizard
//
CompleteWizard();
nPage = g_cCompleteWizardPage; // no way we're moving
break;
}
//
// this also sets the global g_nPage to the right page number
//
NavigateToPage(nPage);
}
function PrepareUploadInformation(oUpload) {
var UpdateAction = getRadioValue('UpdateShortcut');
var bCompatSuccess = (UpdateAction == 'Yes');
var sAppDisplayName;
var sCmd;
var lMediaType = 0; // unknown
sAppDisplayName = g_sApplicationDisplayName;
if (g_sApplicationDisplayName == null || !g_sApplicationDisplayName.length) {
sAppDisplayName = g_sApplication;
}
//
// check whether we have a command line (this should be cracked)
//
sCmd = g_util.GetExePathFromObject(g_sApplication);
if (sCmd == null) {
sCmd = g_sApplication;
}
//
// obtain drive type
//
var driveName = g_fso.GetDriveName(sCmd);
if (driveName != null) {
var oDrive = g_fso.GetDrive(driveName);
if (oDrive != null) {
lMediaType = oDrive.DriveType;
}
}
//
// ===== Upload UI =====
//
var sErrorText;
// var sErrorDetail;
// var sPlea;
// localization for this is not needed (no ui)
//
sErrorText = 'This report contains information about the compatibility settings ' +
'you tried and whether these settings resolved the problem.'
// sErrorDetail = sErrorText;
// sPlea = 'If you send this report to Microsoft, it will help improve future program compatibility. ';
// sPlea += 'The report will be anonymous and confidential.'
//
// Internal Microsoft Site
// BUGBUG remove before we SHIP
//
// oUpload.SetKey ('Server', 'officewatson');
//
oUpload.SetKey ('Server', 'watson.microsoft.com');
oUpload.SetKey ('Stage1URL', '/StageOne');
oUpload.SetKey ('Stage2URL', '/dw/AppCompatTwo.asp');
oUpload.SetKey ('TitleName', 'Program Compatibility Report');
oUpload.SetKey ('Brand', 'SYSTEMRESTORE');
oUpload.SetKey ('ErrorText', sErrorText);
oUpload.SetKey ('HeaderText', 'A Program Compatibility Report has been created');
oUpload.SetKey ('UI LCID', '1033');
// oUpload.SetKey ('ErrorDetail', sErrorDetail);
// oUpload.SetKey ('ErrorSig', 'Program Compatibility Wizard: ' + (bCompatSuccess ? 'Success' : 'Failure'));
// oUpload.SetKey ('Caption', 'Program Compatibility Report');
// oUpload.SetKey ('Plea', sPlea);
//
// ===== Text on buttons =====
//
// oUpload.SetKey ('ReportButton', '&Send Report');
// oUpload.SetKey ('NoReportButton', '&Don\'t Send');
// oUpload.SetKey ('Reportee', 'Microsoft');
// use the flags below to go headless
var fDwFlags = 0x80;
// var fdwFlags = 0x40;
oUpload.SetKey ('Flags', fDwFlags);
// alert('Display name:' + sAppDisplayName + ' cmd: ' + sCmd + ' media: ' + lMediaType + ' success : ' + bCompatSuccess + ' Layer: ' + g_sCompatLayer);
var bSuccessGeneralInfo = oUpload.AddDescriptionFile(sAppDisplayName,
sCmd, // actual command that we ran
lMediaType,
bCompatSuccess,
g_sCompatLayer);
var bSuccessMatchingInfo = oUpload.AddMatchingInfo(g_sApplication);
var bSuccessManifest = oUpload.CreateManifestFile();
return (bSuccessMatchingInfo && bSuccessManifest && bSuccessGeneralInfo);
}
function CompleteWizard() {
pchealth.close();
}
function onBtnBack() {
var nPage = g_nPage - 1;
//
// check the page we're going back from
//
if (event != null) {
event.returnValue = false;
}
switch(g_nPage) {
case g_cFixesLayersPage:
switch(g_ProgramSelectMethod) {
case g_cSelectFromList:
nPage = g_cAppProgramListPage;
break;
case g_cSelectRunFromCD:
nPage = g_cAppPage;
break;
case g_cSelectBrowse:
nPage = g_cAppBrowseProgsPage;
break;
}
break;
case g_cAppBrowseProgsPage:
nPage = g_cAppPage;
break;
case g_cCompatibilityDataPage:
// if we are on a data page -- we have gathered some info
// clear it if so
ClearUploadInformation();
break;
case g_cCompleteWizardPage:
nPage = g_cUpdatePage;
break;
}
NavigateToPage(nPage);
}
function onBtnCancel() {
if (event != null) {
event.returnValue = false;
}
ClearUploadInformation();
pchealth.close();
}
function ExpandSpecialFolders(sPath) {
var Path = sPath;
Path = Path.replace(/%WINDIR%/gi, g_fso.GetSpecialFolder(0));
Path = Path.replace(/%SYSTEM%/gi, g_fso.GetSpecialFolder(1));
Path = Path.replace(/%TEMP%/gi, g_fso.GetSpecialFolder(2));
return(Path);
}
function IsDriveReady(sAppPath) {
var driveName;
var drive;
driveName = g_fso.GetDriveName(sAppPath);
if (!g_fso.DriveExists(driveName)) {
return false;
}
drive = g_fso.GetDrive(driveName);
if (drive == null || !drive.IsReady) {
return false;
}
return true;
}
function RunApp() {
var CompatLayer = g_sCompatLayer;
var TargetApp = g_sApplication;
var AppPath = ExpandSpecialFolders(TargetApp);
var sLayerSave;
var Result;
var bSuccess = false;
var AppName = removeParams(AppPath);
//
// Verify target file path
//
if (!IsDriveReady(AppName) || !g_fso.FileExists(AppName)) {
alert(L_strAppNotFound_ErrorMessage + AppName + L_strEnsureExist_ErrorMessage + L_strMustValid_ErrorMessage);
return false;
}
//
// get the layers associated with this guy
//
sLayerSave = GetApplicationLayer();
try {
if (sLayerSave != null) {
// alert(sLayerSave);
UpdateAppShortcut(false, null);
}
//
// run
//
Result = g_util.RunApplication(CompatLayer,
AppPath,
false); // enable log
bSuccess = (Result == 0);
} catch(e) {
}
if (sLayerSave != null) {
UpdateAppShortcut(true, sLayerSave);
}
if (!bSuccess) {
alert(L_strErrorStartingApp_ErrorMessage + AppPath);
}
return bSuccess;
}
function GetRealPathName(lpszPath) {
var AppPath;
AppPath = g_util.GetExePathFromObject(lpszPath);
if (AppPath == null) {
AppPath = lpszPath;
}
return AppPath;
}
function GetApplicationLayer() {
var CompatLayer = g_sCompatLayer;
var TargetApp;
var AppPath;
if (g_sPersistPath != null) {
TargetApp = g_sPersistPath;
} else {
AppPath = ExpandSpecialFolders(g_sApplication);
TargetApp = GetRealPathName(AppPath);
}
try {
CompatLayer = g_util.GetItemKeys(TargetApp);
} catch(e) {
CompatLayer = null;
}
return CompatLayer;
}
function ParseLayers(sCompatLayer) {
//
// parse the freakin string
//
// alert('parse');
checkRadio ('layer', 'None');
checkCheckbox('chk256color', false);
checkCheckbox('chk640x480', false);
checkCheckbox('chkNoThemes', false);
checkCheckbox('chkSimAdmin', false);
g_UnknownLayers = '';
if (sCompatLayer == null) {
return;
}
var re = /\s+/i
var tokens = sCompatLayer.split(re);
var i;
for (i = 0; i < tokens.length; ++i) {
tok = tokens[i].toUpperCase();
switch(tok) {
case 'WIN2000':
case 'WIN95':
case 'NT4SP5':
case 'WIN98':
case 'WIN2000':
// this item is a check-me shim
checkRadio('layer', tok);
break;
case '256COLOR':
checkCheckbox('chk256color', true);
break;
case '640X480':
checkCheckbox('chk640x480', true);
break;
case 'DISABLETHEMES':
checkCheckbox('chkNoThemes', true);
break;
case 'LUA':
checkCheckbox('chkSimAdmin', true);
break;
default:
if (g_UnknownLayers.length > 0) {
g_UnknownLayers += ' ';
}
g_UnknownLayers += tok;
break;
}
}
}
function UpdateAppShortcut(bStore, sCompatLayer) {
var CompatLayer;
var TargetApp;
var AppPath;
var bSuccess;
if (!bStore) {
CompatLayer = null;
} else {
if (sCompatLayer == null) {
if (g_sCompatLayer == null || !g_sCompatLayer.length) {
CompatLayer = null;
} else {
CompatLayer = g_sCompatLayer;
}
} else {
CompatLayer = sCompatLayer;
}
}
if (g_sPersistPath != null) {
TargetApp = g_sPersistPath;
} else {
AppPath = ExpandSpecialFolders(g_sApplication);
TargetApp = GetRealPathName(AppPath);
}
try {
bSuccess = g_util.SetItemKeys(TargetApp, CompatLayer);
} catch(e) {
bSuccess = false;
}
//
// alert('setting ' + TargetApp + ' to ' + CompatLayer);
//
var SelectProgs = document.all['SelectProgs'];
// alert('line: ' + g_sCmdLine);
if (g_sCmdLine != null && g_sCmdLine.length != 0) {
SelectProgs.UpdateListItem(g_sCmdLine, CompatLayer);
}
if (!bSuccess) {
alert(L_strErrorUpdatingShortcut_ErrorMessage + TargetApp);
}
return bSuccess;
}
function EnableNext() {
BlockNextButton(false);
}
function onRadioDblClick() {
onBtnNext();
}
function SelectProgs_DblClk(lFlags) {
//
// retrieve selection, move on to the next page
//
onBtnNext();
return 0;
}
function BrowseProgs_SelectionComplete() {
//
// retrieve selection, move on to the next page
//
onBtnNext();
return 0;
}
function SelectProgs_ProgramListReady() {
var btnNext = document.all['btnNext'];
var progList = document.all['SelectProgs'];
if (g_nPage == g_cAppProgramListPage) {
btnNext.disabled = false;
progList.focus();
}
SetProglistAction('Scan');
g_bProgramsPopulated = true;
}
//-->
</SCRIPT>
<SCRIPT LANGUAGE=javascript FOR=BrowseProgs EVENT="SelectionComplete()">
<!--
BrowseProgs_SelectionComplete();
//-->
</SCRIPT>
<SCRIPT LANGUAGE=javascript FOR=BrowseProgs EVENT="StateChanged(lState)">
<!--
// handle state changed for the control
if (lState == -5) {
OnBrowseProgsReady();
g_bAppBrowseProgsInitialized = true;
}
//-->
</SCRIPT>
<SCRIPT LANGUAGE=javascript FOR=SelectProgs EVENT="DblClk(lFlags)">
<!--
SelectProgs_DblClk(lFlags);
//-->
</SCRIPT>
<SCRIPT LANGUAGE=javascript FOR=SelectProgs EVENT="ProgramListReady()">
<!--
SelectProgs_ProgramListReady();
//-->
</SCRIPT>
</head>
<body onLoad="javascript:InitPage()" style="margin-top:2em; margin-left:22px; margin-right:22px">
<!-- header -->
<table border=0 cellpadding=0 cellspacing=0 height=100% width=100% style="margin-top:0; margin-bottom:0">
<tr style="margin-bottom:0em; margin-top:0em">
<td>
<div id=loc00 class="sys-font-heading3 sys-rhp-color-title" style="margin-bottom:1em; margin-top:0em">
Program Compatibility Wizard
</div>
</td>
</tr>
<tr valign=top height=100%>
<td>
<!-- Page 0 - Intro -->
<Div id=Intro style="height:100%; margin-top:0em; margin-bottom:0em">
<form name=frmIntro onSubmit='javascript:onBtnNext()' method=post action="">
<table border=0 cellspacing=0 cellpadding=0 height=100% style="margin-top:0; margin-bottom:0">
<tr valign=top>
<td>
<Div style="height:90%; overflow-y:auto">
<Div id=loc01 class="sys-font-body-bold sys-color-body" style="margin-bottom:1em; margin-top:0em">
<b>Welcome to the Program Compatibility Wizard</b>
</Div>
<Div id=loc02 class="sys-font-body sys-color-body" style="margin-bottom:2em; margin-top:0em">
If you are experiencing problems with a program that worked
correctly on an earlier version of Windows, this wizard helps you
select and test compatibility settings that may fix those problems.
</Div>
<Div id=loc03 class="sys-font-body sys-color-body" style="margin-top:0em">
<b>Caution:</b> It is recommended that you do not use this wizard for older
virus detection, backup, or system programs.
</Div>
</Div>
</td>
</tr>
<tr style="height:2.5em">
<td>
<Div id=loc04 class="sys-font-body sys-color-body" style="vertical-align:bottom; margin-bottom:1em">
To continue, click Next.
</Div>
</td>
</tr>
</table>
</form>
</Div>
<!-- Page 1 - App -->
<DIV id=AppSelectMethod style="height:100%; display:none; overflow-y:auto">
<form name="frmApp" method="post" onsubmit='javascript:onBtnNext()' enctype="multipart/form-data" action="">
<TABLE border=0 cellspacing=0 cellpadding=0 width=100%>
<TR>
<TD>
<Div id=loc11 class="sys-font-body-bold sys-color-body" style="margin-bottom:1em; margin-top:0em">
<b>How do you want to locate the program that you
would like to run with compatibility settings?</b>
</Div>
<Div class="sys-font-body sys-color-body" style="margin-left:0; margin-bottom:1em; margin-top:0em">
<INPUT CHECKED name=progClass type=radio value=ProgList id=chkProgList ondblclick="javascript:onRadioDblClick()">
<label id=lblProgList for=chkProgList title="Choose a program from the list" ondblclick="javascript:onRadioDblClick()"
ACCESSKEY="h">
I want to c<u>h</u>oose from a list of programs
</label>
</Div>
<Div class="sys-font-body sys-color-body" style="margin-bottom:1em; margin-top:0em">
<INPUT name=progClass type=radio value=CDProg id=chkCDProg ondblclick="javascript:onRadioDblClick()">
<label id=lblCDProg for=chkCDProg title="I want to use the program in the CD-ROM drive" ondblclick="javascript:onRadioDblClick()"
ACCESSKEY="u">
I want to <u>u</u>se the program in the CD-ROM drive
</label>
</Div>
<Div class="sys-font-body sys-color-body" style="margin-bottom:1em; margin-top:0em">
<INPUT name=progClass type=radio value=BrowseProg id=chkBrowseProg ondblclick="javascript:onRadioDblClick()">
<label id=lblBrowseProg for=chkBrowseProg title="Browse for the application" ondblclick="javascript:onRadioDblClick()"
ACCESSKEY="a">
I want to loc<u>a</u>te the program manually
</label>
</Div>
</TD>
</TR>
</TABLE>
</form>
</DIV>
<!-- Page 2 - AppProgramList -->
<DIV id=AppProgramList style="display:none; height:100%; margin-top:0em; margin-bottom:0em">
<form name="frmAppProgramList" method="post" onsubmit='javascript:onBtnNext()' enctype="multipart/form-data" action="">
<TABLE border=0 cellspacing=0 cellpadding=0 width=100% height=100% style="margin-top:0; margin-bottom:0">
<TR valign=top>
<TD>
<Div style="height:90%; overflow-y:auto">
<Div id=loc21 class="sys-font-body-bold sys-color-body" style="margin-top:0; margin-bottom:1em">
<b>Which program do you want to run with compatibility settings?</b>
</Div>
<Div class="sys-font-body sys-color-body" style="margin-top:0; margin-bottom:0em">
<label id=lblSelectProgs for=SelectProgs title="Select a program"
ACCESSKEY="S">
<u>S</u>elect a program:
</label>
<div class="sys-font-body sys-color-body" style="margin-top:0.25em; margin-bottom:0em"></div>
<!-- No accesskey is needed for this object tag - it is complimentary (from the label) -->
<OBJECT ID=SelectProgs classid=CLSID:B9B7D40C-0C41-4EAF-B0B5-6B41378C7F48 width="100%" height="80%">
</OBJECT>
</Div>
</Div>
</TD>
</TR>
<tr style="height:3em">
<td>
<Div id=divProgListAction class="sys-font-body sys-color-body" style="margin-bottom:1em; margin-top:0em">
<BUTTON value="Action" onclick="javascript:ProgListAction()"
id=btnProgListAction
style="width:6em; margin-left:0em; margin-top:0em; margin-bottom:0.5em">
</BUTTON>
</Div>
</td>
</tr>
</TABLE>
</form>
</DIV>
<!-- Page 3 - AppBrowseProgs -->
<DIV id=AppBrowseProgs style="display:none; height=100%; overflow-y:auto">
<form name="frmAppBrowseProgs" method="post" onsubmit='javascript:onBtnNext()' enctype="multipart/form-data" action="">
<TABLE border=0 cellspacing=0 cellpadding=0 width=100%>
<TR>
<TD valign="top">
<Div id=loc31 class="sys-font-body-bold sys-color-body" style="margin-top:0; margin-bottom:1em">
<b>Which program do you want to run with compatibility settings?</b>
</Div>
<Div class="sys-font-body sys-color-body" style="margin-top:0; margin-bottom:1em">
<label id=lblBrowseProgs for=BrowseProgs
titile="Type the path to the program shortcut or executable file"
ACCESSKEY="Y">
T<U>y</U>pe the path to the program shortcut or executable file:
</label>
<div class="sys-font-body sys-color-body" style="margin-top:0.25em; margin-bottom:0em"></div>
<!-- note that the accesskey for the control should match all the accelerators defined in that control
parameter Accel should be set to match ACCESSKEY
-->
<OBJECT ID=BrowseProgs classid=CLSID:66CBC149-A49F-48F9-B17A-6A3EA9B42A87 width="100%" height="30">
</OBJECT>
</Div>
</TD>
</TR>
</TBODY>
</TABLE>
</form>
</DIV>
<!-- Page 4 - FixesLayers -->
<DIV id=FixesLayers style="display:none; height:100%; overflow-y:auto">
<form name="frmFixesLayers" method="post" onsubmit='javascript:onBtnNext()' enctype="multipart/form-data" action="">
<TABLE border=0 cellspacing=0 cellpadding=0 width=100%>
<TR>
<TD valign="top">
<Div id=loc41 class="sys-font-body-bold sys-color-body" style="margin-top:0; margin-bottom:1em">
<b>Select a compatibility mode for the program</b>
</Div>
<Div id=loc42 class="sys-font-body sys-color-body" style="margin-top:0; margin-bottom:1em">
Choose the operating system that is recommended for this program,
or that previously supported the program correctly:
</Div>
<Div class="sys-font-body sys-color-body" style="margin-top:0; margin-bottom:1em">
<INPUT CHECKED name=layer type=radio value=WIN95 id=chkWin95 ondblclick="javascript:onRadioDblClick()">
<label id=lblWIN95 for=chkWin95 ondblclick="javascript:onRadioDblClick()"
title="Set to run under Windows 95 compatibility mode" ACCESSKEY="5">
Microsoft Windows 9<u>5</u>
</label>
</Div>
<Div class="sys-font-body sys-color-body" style="margin-top:0; margin-bottom:1em">
<INPUT name=layer type=radio value=NT4SP5 id=chkNT4SP5 ondblclick="javascript:onRadioDblClick()">
<label id=lblNT4SP5 for=chkNT4SP5 ondblclick="javascript:onRadioDblClick()"
title="Set to run under NT4 Service pack 5 compatibility mode" ACCESSKEY="T">
Microsoft Windows N<u>T</u> 4.0 (Service Pack 5)
</label>
</Div>
<Div class="sys-font-body sys-color-body" style="margin-top:0; margin-bottom:1em">
<INPUT name=layer type=radio value=WIN98 id=chkWin98 ondblclick="javascript:onRadioDblClick()">
<label id=lblWIN98 for=chkWin98 ondblclick="javascript:onRadioDblClick()"
title="Set to run under Windows 98/Windows Me compatibility mode" ACCESSKEY="8">
Microsoft Windows 9<u>8</u> / Windows Me
</label>
</Div>
<Div class="sys-font-body sys-color-body" style="margin-top:0; margin-bottom:1em">
<INPUT name=layer type=radio value=WIN2000 id=chkWin2000 ondblclick="javascript:onRadioDblClick()">
<label id=lblWIN2000 for=chkWin2000 ondblclick="javascript:onRadioDblClick()"
title="Set to run under Windows 2000 compatibility mode" ACCESSKEY="2">
Microsoft Windows <u>2</u>000
</label>
</Div>
<Div class="sys-font-body sys-color-body" style="margin-top:0; margin-bottom:1em">
<INPUT name=layer type=radio value=None id=chkNoLayer ondblclick="javascript:onRadioDblClick()">
<label id=lblNone for=chkNoLayer ondblclick="javascript:onRadioDblClick()"
title="Do not apply a compatibility mode" ACCESSKEY="D">
<u>D</u>o not apply a compatibility mode
</label>
</Div>
</TD>
</TR>
</TABLE>
</form>
</DIV>
<!-- Page 5 - FixesOther -->
<DIV id=FixesOther style="height:100%; display:none; overflow-y:auto">
<form name="frmFixesOther" method="post" onsubmit='javascript:onBtnNext()' enctype="multipart/form-data" action="">
<TABLE border=0 cellspacing=0 cellpadding=0 width=100%>
<TR>
<TD valign="top">
<Div id=loc51 class="sys-font-body-bold sys-color-body" style="margin-top:0; margin-bottom:1em">
<b>Select display settings for the program</b>
</Div>
<Div id=loc52 class="sys-font-body sys-color-body" style="margin-top:0; margin-bottom:1em">
Choose the settings that are recommended for this program,
or that previously supported the program correctly:
</Div>
<Div class="sys-font-body sys-color-body" style="margin-top:0; margin-bottom:1em">
<INPUT type=checkbox name=chk256color id=chk256color value="256COLOR" >
<label id=lbl256COLOR for=chk256color title="Run program in 256 colors mode"
ACCESSKEY="R">
256 colo<u>r</u>s
</LABEL>
</Div>
<Div class="sys-font-body sys-color-body" style="margin-top:0; margin-bottom:1em">
<INPUT type=checkbox name=chk640x480 id=chk640x480 value="640X480" >
<label id=lbl640X480 for=chk640x480 title="Run program in 640 x 480 screen resolution"
ACCESSKEY="s">
640 x 480 <u>s</u>creen resolution
</LABEL>
</Div>
<Div class="sys-font-body sys-color-body" style="margin-top:0; margin-bottom:1em">
<INPUT type=checkbox name=chkNoThemes id=chkNoThemes value="DISABLETHEMES" >
<label id=lblDISABLETHEMES for=chkNoThemes title="Disable visual themes"
ACCESSKEY="D">
<u>D</u>isable visual themes
</LABEL>
<div id=loc53 class="sys-font-body sys-color-body" style="margin-left:2em; margin-top:0em; margin-bottom:0em">
By default, Windows XP uses visual themes that may change the appearance or behavior of other programs.
</div>
</Div>
<Div class="sys-font-body sys-color-body" style="margin-top:0; margin-bottom:1em">
<INPUT type=checkbox name=chkSimAdmin id=chkSimAdmin value="LUA" >
<label id=lblLUA for=chkSimAdmin title="Simulate administrative privileges"
ACCESSKEY="V">
Simulate administrative pri<u>v</u>ileges
</label>
</Div>
<Div class="sys-font-body sys-color-body" style="margin-top:0; margin-bottom:1em">&nbsp;</Div>
<Div id=loc54 class="sys-font-body sys-color-body" style="margin-top:0; margin-bottom:1em">
<b>Note:</b> These options apply most commonly to games or educational programs.
If your program is not a game or educational title,
it is likely that you don't need to select anything on this page.
</Div>
</TD>
</TR>
</TABLE>
</form>
</DIV>
<!-- Page 6 - Run -->
<DIV id=Run style="height:100%; display:none; margin-top:0em; margin-bottom:0em">
<form name="frmRun" onSubmit="javascript:onBtnNext()" action="" method=post>
<TABLE border=0 cellPadding=0 cellSpacing=0 width=100% height=100% style="margin-top=0; margin-bottom:0">
<TR>
<TD valign="top">
<Div style="height:100%; overflow-y:auto">
<Div id=loc61 class="sys-font-body-bold sys-color-body" style="margin-top:0; margin-bottom:1em">
<b>Test your compatibility settings</b>
</Div>
<Div id=loc62 class="sys-font-body-bold sys-color-body" style="margin-top:0; margin-bottom:1em">
<b>Program name or path:</b>
</Div>
<Div id="divTargetApp" class="sys-font-body sys-color-body" style="margin-top:0; margin-bottom:1em; margin-left:1em"></Div>
<Div id=loc63 class="sys-font-body-bold sys-color-body" style="margin-top:0; margin-bottom:1em">
<b>Compatibility settings to apply:</b>
</Div>
<Div id="divCompatLayer" class="sys-font-body sys-color-body" style="margin-top:0; margin-bottom:2em; margin-left:1em"></div>
</Div>
</TD>
</TR>
<TR style="height=6em">
<TD>
<Div class="sys-font-body sys-color-body" style="vertical-align:bottom; margin-top:0; margin-bottom:1em">
<Div id=loc64 class="sys-font-body sys-color-body" style="margin-top:0; margin-bottom:1em">
To test the program with the new compatibility settings, click Next.
</Div>
<Div id=loc65 class="sys-font-body sys-color-body" style="margin-top:0; margin-bottom:0em">
After verifying whether the program worked correctly, return to this wizard.
</Div>
</Div>
</TD>
</TR>
</TABLE>
</form>
</DIV>
<!-- Page 7 - Update -->
<DIV id=Update style="height:100%; display:none; overflow-y:auto; margin-top:0em; margin-bottom:0em">
<form name="frmUpdate" method="post" onSubmit='javascript:onBtnNext()' action="">
<TABLE border=0 cellPadding=0 cellSpacing=0 width=100%>
<TR>
<TD valign="top">
<Div id=loc71 class="sys-font-body-bold sys-color-body" style="margin-top:0; margin-bottom:1em">
<b>Did the program work correctly?</b>
</Div>
<Div class="sys-font-body sys-color-body" style="margin-top:0; margin-bottom:1em">
<input name="UpdateShortcut" type="radio" value="Yes" CHECKED id=chkYes ondblclick="javascript:onRadioDblClick()">
<label id=lblYes for=chkYes title="Yes, set this program to always use these compatibility settings" ondblclick="javascript:onRadioDblClick()"
ACCESSKEY="Y">
<u>Y</u>es, set this program to always use these compatibility settings
</label>
</Div>
<Div class="sys-font-body sys-color-body" style="margin-top:0; margin-bottom:1em">
<input name="UpdateShortcut" type="radio" value="TryOther" id=chkTryOther ondblclick="javascript:onRadioDblClick()">
<label id=lblTryOther for=chkTryOther title="No. Try different compatibility settings" ondblclick="javascript:onRadioDblClick()"
ACCESSKEY="D">
No, try <u>d</u>ifferent compatibility settings
</label>
</Div>
<Div class="sys-font-body sys-color-body" style="margin-top:0; margin-bottom:2em">
<input name="UpdateShortcut" type="radio" value="No" id=chkNo ondblclick="javascript:onRadioDblClick()">
<label id=lblNo for=chkNo title="No, go to the end of this wizard" ondblclick="javascript:onRadioDblClick()"
ACCESSKEY="F">
No, I am <u>f</u>inished trying compatibility settings
</label>
</Div>
<Div id=MediaWarning class="sys-font-body sys-color-body" style="margin-top:0; margin-bottom:1em"></div>
</TD>
</TR>
</TABLE>
</form>
</DIV>
<!-- Page 8 - Compatibility Data -->
<DIV id=CompatibilityData style="height:100%; display:none; margin-top:0em; margin-bottom:0em">
<form name="frmCompatData" method="post" onSubmit='javascript:onBtnNext()' action="">
<TABLE border=0 cellPadding=0 cellSpacing=0 width=100% height=100%>
<TR>
<TD valign="top">
<Div id=cwBody style="height:90%; overflow-y:auto">
<Div id=loc81 class="sys-font-body-bold sys-color-body" style="margin-top:0; margin-bottom:1em">
<b>Program Compatibility Data</b>
</Div>
<Div id=loc82 class="sys-font-body sys-color-body" style="margin-top:0em; margin-bottom:1em; margin-left:0">
Microsoft has created temporary files that contain information about the settings you selected
and whether the problems were fixed. Sending this information to Microsoft will help us improve
program compatibility.
</Div>
<Div id=loc83 class="sys-font-body sys-color-body" style="margin-top:0em; margin-bottom:1em; margin-left:0">
Would you like to send this information to Microsoft?
</Div>
<Div class="sys-font-body sys-color-body" style="margin-top:0; margin-bottom:1em">
<INPUT name=UploadInfo type=radio value=Yes id=chkUploadInfo onclick="javascript:EnableNext()">
<label id=lblUploadInfo for=chkUploadInfo
title="Yes, send this information to Microsoft"
ACCESSKEY="Y">
<U>Y</U>es
</label>
</Div>
<Div class="sys-font-body sys-color-body" style="margin-top:0; margin-bottom:1em">
<INPUT name=UploadInfo type=radio value=No id=chkNoUploadInfo onclick="javascript:EnableNext()">
<label id=lblNoUploadInfo for=chkNoUploadInfo
title="No, Do not send this information to Microsoft"
ACCESSKEY="o">
N<U>o</U>
</label>
</Div>
<Div id=loc84 class="sys-font-body sys-color-body" style="margin-top:0em; margin-bottom:1em; margin-left:0">
The information will be treated anonymously and confidentially per
<a target="_new" href="http://go.microsoft.com/fwlink/?LinkId=825">our data collection policy</a> on the the Web.
</Div>
<Div id=loc85 class="sys-font-body sys-color-body" style="margin-top:0em; margin-bottom:1em; margin-left:0">
<a href="javascript:ViewTempFileList();">See the temporary files that would be sent</a>
</Div>
</Div>
</TD>
</TR>
</TABLE>
</form>
</DIV>
<!-- Page 9 - Finish -->
<DIV id=CompleteWizard style="height:100%; display:none; margin-top:0em; margin-bottom:0em">
<form name="frmCompleteWizard" method="post" onSubmit='javascript:onBtnNext()' action="">
<TABLE border=0 cellPadding=0 cellSpacing=0 width=100% height=100%>
<TR>
<TD valign="top">
<Div id=cwBody style="height:90%; overflow-y:auto">
<Div id=loc91 class="sys-font-body-bold sys-color-body" style="margin-top:0; margin-bottom:1em">
<b>Completing the Program Compatibility Wizard</b>
</Div>
<Div id="divCompatSettings" class="sys-font-body sys-color-body" style="margin-top:0; margin-bottom:2em"></Div>
<Div id=loc92 class="sys-font-body sys-color-body" style="margin-top:0; margin-bottom:1em">
To readjust or remove compatibility settings, run this wizard again.
</Div>
</Div>
</TD>
</TR>
<TR style="height:2.5em">
<TD>
<Div id=loc93 class="sys-font-body sys-color-body" style="vertical-align:bottom; margin-top:0; margin-bottom:1em">
To close this wizard, click Finish.
</Div>
</TD>
</TR>
</TABLE>
</form>
</DIV>
</td>
</tr>
<tr style="height:3em" valign=top>
<td>
<hr>
<form name="frmNav" method="post" onsubmit='javascript:onBtnNext()'>
<p align="right">
<BUTTON id=btnBack value="Back" onclick="javascript:onBtnBack()" name="btnBack" style="width:6em; margin-left:0em; margin-right:0.5em; margin-top:0em"></BUTTON>
<BUTTON id=btnNext type="Submit" value="Next" onclick="javascript:onBtnNext()" name="btnNext" style="width:6em; margin-left:0.5em; margin-right:0.5em; margin-top:0em"></BUTTON>
<BUTTON id=btnCancel value="Cancel" onclick="javascript:onBtnCancel()" name="btnCancel" style="width:6em; margin-left:0.5em; margin-right:0em; margin-top:0em"></BUTTON>
</p>
</form>
</TD>
</TR>
</TABLE>
</body>
</HTML>