mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2117 lines
71 KiB
2117 lines
71 KiB
<!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 "[email protected]" 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 = ' < <u>B</u>ack '; // this is the caption for Back button : ' < Back '
|
|
var L_strBtnNextCaption_Button = ' N<u>e</u>xt > '; // this is the caption for Next button : ' Next > '
|
|
var L_strBtnFinish_Button = ' <u>F</u>inish '; // this is the caption for Finish button
|
|
var L_strStopBtnCaption_Button = ' Sto<u>p</u> ';
|
|
var L_strRefreshBtnCaption_Button = ' <u>R</u>efresh ';
|
|
var L_strCancelBtnCaption_Button = ' Cancel ';
|
|
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> Compatibility mode cannot be set on this program. The selected program is on the network or a removable media device.';
|
|
var L_strCompatModePartOfOS_Text = '<b>Warning:</b> Compatibility Mode cannot be set on this program. Selected program is part of the Operating System.';
|
|
var L_strCompatModeNotExe_Text = '<b>Warning:</b> Compatibility Mode cannot be set on this object. 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"> </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>
|