Help - Search - Members - Calendar
Full Version: Fix for 'undefined' reboot error in WPI 6.5.1
MSFN Forums > Member Contributed Projects > Windows Post-Install Wizard (WPI)

   
Google Internet Forums Unattended CD/DVD Guide
wwsmith
It really tooks a long way to locate this bug in VMware!

E.g.: the 'undefined' error comes up if you have the 'LogInstallation' flag in 'useroptions.js' disabled
and choose only one menu entry containing the %reboot% command:

CODE
config.js
...
pn=1;
prog[pn]=['APP 1 - Reboot'];
ordr[pn]=[101];
desc[pn]=['Test APP 1'];
uid[pn]=['APP1'];
dflt[pn]=['yes'];
cat[pn]=['System'];
forc[pn]=['no'];
cmd1[pn]=['"%wpipath%\\Install\\APP_1.cmd" %wpipath%\\'];
cmd2[pn]=['%reboot% 10'];
pn++;

prog[pn]=['APP 2'];
ordr[pn]=[102];
desc[pn]=['Test APP 2'];
uid[pn]=['APP2'];
dflt[pn]=['yes'];
cat[pn]=['System'];
forc[pn]=['no'];
cmd1[pn]=['"%wpipath%\\Install\\APP_2.cmd" %wpipath%\\'];
pn++;
...

The machine reboots and then 'Installer.hta' throws an 'undefined' error and
terminates:

CODE
Installer.hta
...

// Check for ResumeInstall registry entries
try
{
CurrentInstall=WshShell.regRead("HKEY_CURRENT_USER\\Software\\WPI\\CurrentInstall");
LastExec=WshShell.regRead("HKEY_CURRENT_USER\\Software\\WPI\\LastExec");
LastTopLine=WshShell.regRead("HKEY_CURRENT_USER\\Software\\WPI\\LastTopLine");
Language=WshShell.regRead("HKEY_CURRENT_USER\\Software\\WPI\\Language");

// ===>
LogPath[0]=WshShell.regRead("HKEY_CURRENT_USER\\Software\\WPI\\LogPath");
// ===> this line throws 'undefined' if the REG entry does not exist !!!
// ===> then WPI exits

numCommands=WshShell.regRead("HKEY_CURRENT_USER\\Software\\WPI\\numCommands");
curCommand=WshShell.regRead("HKEY_CURRENT_USER\\Software\\WPI\\curCommand");
}
catch (ex)
{
alert(getText(UnableToResumeInstall));
try
{
WshShell.regWrite("HKEY_CURRENT_USER\\Software\\WPI\\ResumeInstall",0,"REG_DWORD");
}
catch (ex)
{;}
ExitWPI();
}
...

The solutions is quite simple: writing the REG 'LogPath' entry by default:

CODE
WPI.hta
...
<script type="text/javascript">
try
{
WshShell.regWrite("HKEY_CURRENT_USER\\Software\\WPI\\Theme",Theme,"REG_SZ");
WshShell.regWrite("HKEY_CURRENT_USER\\Software\\WPI\\Language",Language,"REG_SZ");
WshShell.regWrite("HKEY_CURRENT_USER\\Software\\WPI\\PlayAudioInInstaller",PlayAudioInInstaller,"REG_SZ");
WshShell.regWrite("HKEY_CURRENT_USER\\Software\\WPI\\AudioVolume",Volume,"REG_SZ");

// ===> insert the following line
// ===> to fix

WshShell.regWrite("HKEY_CURRENT_USER\\Software\\WPI\\LogPath",LogPath,"REG_SZ");

// ===>

}
catch (ex)
{;}
</script>
...


Also the 'undefinied' message - when installing Office2003 - is gone...

That's it - I hope you like it smile.gif
mritter
Thanks. I put your additional line in install_log.js instead. A "default" entry was not being written. It now writes a "blank" path if Log Installation is not checked.
wwsmith
QUOTE (mritter @ Jul 15 2008, 11:04 AM) *
Thanks. I put your additional line in install_log.js instead.


Hi,
I think that's just the problem: the flag 'LogInstallation=false' from 'useroptions.js' prevents the setting of the reg key entry - look in 'installer_log.js' - if (LogInstallation) ... . Therefore I put the code add in WPI.hta to secure that the entry is written ever.

mritter
Right, it was. But installer.js is where the log entry is called from, not wpi.hta. In installer.js I updated

CODE
function OpenLogFile()
{
    position="installer_log.js";
    whatfunc="OpenLogFile()";

    var logFile;
    var stamp, month, date, hours, minutes, seconds;
    var TheDate = new Date();

    if (LogInstallation)
    {
        if (LogPath=="")

..........

    }
    else
        write default blank reg key here
}


function LogGlobalVariables()
{

This way if Log Installation is checked the official key is written. If not checked a blank one is written just so the read won't error.
wwsmith
QUOTE (mritter @ Jul 16 2008, 04:06 PM) *
Right, it was. But installer.js is where the log entry is called from, not wpi.hta. In installer.js I updated
This way if Log Installation is checked the official key is written. If not checked a blank one is written just so the read won't error.

You are right - the call comes from installer.js - my mistake!
Google Internet Forums Unattended CD/DVD Guide
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.