Francesco
MemberFrancesco's Achievements
0
Reputation
-
K-Lite Unattended Install through WPI
Francesco replied to hoeperc's topic in Windows Post-Install Wizard (WPI)
This is how I install it: "%wpipath%\Install\Multimedia\Codec Packs\K-Lite Codec Pack v10.6.0 Full.exe" /verysilent /norestart /LoadInf="%wpipath%\Install\Multimedia\Codec Packs\K-Lite Codec Pack v10.6.0 Full - Unattended Settings.ini"As you can see I just put the full path for the INI file. No need for an SFX archive. -
Languages, Themes, Manuals & Mods
Francesco replied to Kelsenellenelvian's topic in Windows Post-Install Wizard (WPI)
Can't those two lines simply be removed from all languages files? -
WPI has a bug that when an alert is issued before DHTMLx has been initialized it throws a javascript error. That's why error catching in conditions and other places doesn't work properly.
-
WPI v8.7.2 Release Thread
Francesco replied to Kelsenellenelvian's topic in Windows Post-Install Wizard (WPI)
if (Caption.indexOf("Windows 2012") != -1) szOSVerCache="12"; else if (Caption.indexOf("Windows 8") != -1) szOSVerCache="Win8"; else if (Caption.indexOf("Windows 7") != -1) szOSVerCache="Win7"; else if (Caption.indexOf("2008") != -1) szOSVerCache="08"; else if (Caption.indexOf("Vista") != -1) szOSVerCache="Vista"; else if (Caption.indexOf("2003") != -1) szOSVerCache="03"; else if (Caption.indexOf("XP") != -1) szOSVerCache="XP"; else if (Caption.indexOf("2000") != -1) szOSVerCache="2K"; if (szOSVerCache=="08") szEditionIDCache=getOSsku(OSSKU); else if (szOSVerCache=="Vista") szEditionIDCache=getOSsku(OSSKU); else if (szOSVerCache=="03") { if (Caption.indexOf("Standard") != -1) szEditionIDCache="Standard Edition"; else if (Caption.indexOf("Enterprise") != -1) szEditionIDCache="Enterprise Edition"; else if (Caption.indexOf("Web") != -1) szEditionIDCache="Web Edition"; else if (Caption.indexOf("Datacenter") != -1) szEditionIDCache="Datacenter Edition"; else if (Caption.indexOf("Itanium") != -1) szEditionIDCache="Itanium Edition"; } else if (szOSVerCache=="XP") { if (Caption.indexOf("Home") != -1) szEditionIDCache="Home Edition"; else if (Caption.indexOf("Professional") != -1) szEditionIDCache="Professional Edition"; } else if (szOSVerCache=="2K") { if (Caption.indexOf("Professional") != -1) szEditionIDCache="Professional Edition"; else if (Caption.indexOf("2000 Server") != -1) szEditionIDCache="Server Edition"; else if (Caption.indexOf("2000 Advanced Server") != -1) szEditionIDCache="Advanced Server Edition"; else if (Caption.indexOf("Datacenter") != -1) szEditionIDCache="Datacenter Edition"; }problem solved? -
It happened to me too but now it no longer shows, maybe they pulled the update?
-
I don't know if this classifies as a bug but when I remove every keyboard except the one for my language the following keys and files for extra US-based keyboards are not removed: "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00010409""HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00020409""HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00030409""HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00040409""C:\Windows\System32\KBDDV.DLL""C:\Windows\System32\KBDUSX.DLL""C:\Windows\System32\KBDUSL.DLL""C:\Windows\System32\KBDUSR.DLL"
-
"upd: Direct integration support for many more hotfixes, mainly XP (including x64)" Some details, please
-
Remove from jscript.js: function TimedWaitForProgram(ImageName,HowLong){ position="jscript.js";whatfunc="TimedWaitForProgram()";var Elapsed=3;Pause(3,0);while (Elapsed<=HowLong*60){ var oExec = WshShell.Exec('tasklist.exe'); while (oExec.Status == 0) Pause(0,100); var Output = oExec.StdOut.ReadAll() + oExec.StdErr.ReadAll(); if (Output.search(ImageName)==-1) return; Pause(3,0); Elapsed += 3;}}At the bottom of WMI.js add: function TimedWaitForProgram(ImageName,HowLong){ position="wmi.js";whatfunc="TimedWaitForProgram()";try{ objWMIService=GetObject("winmgmts:\\\\" + "." + "\\root\\CIMV2"); var Elapsed=0; while (!HowLong || (Elapsed<=HowLong*60)) { colItems=objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name='"+ImageName+"'"); if (colItems.Count > 0) return true; Pause(1,0); Elapsed += 1; }}catch(ex){}return false;}
-
WPI 8.6 and beyond bug\bugfix thread
Francesco replied to Kelsenellenelvian's topic in Windows Post-Install Wizard (WPI)
Sure. WPI.zip -
In configwizard.js after CommandsMenuBar.addNewChild("jscript_system", 10, "jscript_ErrorReporting", "ErrorReporting()", false, "", "");add CommandsMenuBar.addNewChild("jscript_system", 11, "jscript_SetAppAsDefault", "SetAppAsDefault()", false, "", "");and before case 'jscript_SetAutoLogonUser':add case 'jscript_SetAppAsDefault': HandleCommandsSelectionMenu('{JSCRIPT}=SetAppAsDefault("Program ID")'); break;In jscript.js add function SetAppAsDefault(ProgId){ position="jscript.js";whatfunc="SetAppAsDefault()";RunCmd('"' + wpipath + '\\Tools\\WPI Tool.exe" /Action=SetAppAsDefaultAll /ProgId="' + ProgId + '"', false, true);}And replace WPI Tool.exe with the attached one. WPI Tool.exe
-
WPI 8.6 and beyond bug\bugfix thread
Francesco replied to Kelsenellenelvian's topic in Windows Post-Install Wizard (WPI)
enable64bit can be removed since the launcher when possible always run MSHTA in 64bit mode. From configwizard.js remove: document.getElementById("bit64").checked=configList[pos].bit64=="yes" ? 1 : 0;and configList[pos].bit64=document.getElementById("bit64").checked ? "yes" : "no";and entry.bit64="no";and document.getElementById("bit64").disabled=state;and case "bit64": configList[pn-2].bit64=val; break;and WriteConfigValue(tf, "bit64", configList[i].bit64,0);and document.getElementById("lblEnable64BitProcessing").innerHTML=getText(lblEnable64BitProcessing);From globals.js remove var ExecuteBeforebit64=false;and var ExecuteAfterbit64=false;and var bit64=[]; // Enable 64bit processingFrom installer.js remove programs[0].bit64=ExecuteBeforebit64==true ? "yes" : "no";and programs[0].bit64="yes";and programs[0].bit64="no";and programs[programs.length-1].bit64=ExecuteAfterbit64==true ? "yes" : "no";and programs[programs.length-1].bit64="no";and programs[programs.length-1].bit64="no";and if (programs[item].bit64=="yes" && OSBits==64) cmd='"'+sysPath64+'RegEdt32" /S ' + cmd; elseand if (programs[item].bit64=="yes" && OSBits==64) cmd='"'+sysPath64+'cmd.exe" /C '+cmd; elseFrom installer_log.js remove WriteLogLinePlain(" ExecuteBeforebit64=" + ExecuteBeforebit64);and WriteLogLinePlain(" ExecuteAfterbit64=" + ExecuteAfterbit64);From installer_reboot.js remove if (rbProg.bit64 != null) rbfHandle.WriteLine("programs[prb].bit64=['"+GetConfigValue(rbProg.bit64.toString(),1)+"'];");From optionswizard.js remove getElementById("lblExecuteBeforebit64").innerHTML=getText(lblEnable64BitProcessing);and getElementById("lblExecuteAfterbit64").innerHTML=getText(lblEnable64BitProcessing);and document.getElementById("ExecuteBeforebit64").disabled=false;and document.getElementById("ExecuteBeforebit64").disabled=true;and document.getElementById("ExecuteAfterbit64").disabled=false;and document.getElementById("ExecuteAfterbit64").disabled=true;and ExecuteBeforebit64=false;and ExecuteAfterbit64=false;and document.getElementById("ExecuteAfterbit64").checked=ExecuteBeforebit64;and document.getElementById("ExecuteAfterbit64").checked=ExecuteAfterbit64;and if (opt=="ExecuteBeforebit64") document.getElementById("ExecuteBeforebit64").checked=val=="true" ? true : false;and if (opt=="ExecuteAfterbit64") document.getElementById("ExecuteAfterbit64").checked=val=="true" ? true : false;and tf.WriteLine("ExecuteBeforebit4="+ExecuteBeforebit64+";");and tf.WriteLine("ExecuteAfterbit64="+ExecuteAfterbit64+";");and tf.WriteLine("ExecuteBeforebit64="+document.getElementById("ExecuteBeforebit64").checked+";");and tf.WriteLine("ExecuteAfterbit64="+document.getElementById("ExecuteAfterbit64").checked+";");From program.js remove bit64=[];and this.bit64=bit64[idx];and bit64[i+1]=programs[i].bit64;From updatewizard.js remove tf.WriteLine('\t\t\t"Bit64" : '+configList.Programs[i].Bit64+',');and case "bit64": configList[pn-2].bit64=val; break;and tf.WriteLine("// bit64[pn]=['no'];");and WriteConfigValue(tf, "bit64", configList[i].bit64,0);From configwizardtemplate_details.htm remove <tr> <td> <table border="0" cellpadding="0" cellspacing="0"> <tr> <td> <input id="bit64" type="checkbox" onClick="ConfigUpdated();" > </td> <td nowrap> <div id="lblEnable64BitProcessing" class="opTxt" align="absmiddle"></div> </td> </tr> </table> </td> <td> <!-- next option here --> </td> </tr>From globals_lang.js remove var lblEnable64BitProcessing=[];From the language files remove the lines starting with: lblEnable64BitProcessing[lang]From optionswizardtemplate_tools.htm remove <td> <table border="0" cellpadding="0" cellspacing="0"> <tr> <td> <input id="ExecuteBeforebit64" type="checkbox" onClick="ConfigUpdated();" > </td> <td> <div id="lblExecuteBeforebit64" class="opTxt" align="absmiddle"></div> </td> </tr> </table> </td>and <td> <table border="0" cellpadding="0" cellspacing="0"> <tr> <td> <input id="ExecuteAfterbit64" type="checkbox" onClick="ConfigUpdated();" > </td> <td> <div id="lblExecuteAfterbit64" class="opTxt" align="absmiddle"></div> </td> </tr> </table> </td>In configwizard.js replace tf.WriteLine("// WPI Config 8.0.0");with tf.WriteLine("// WPI Config 8.7.0");In WPI.HTA after else if (ver<800) {/* var UpTxt=new String(); UpTxt=getText(txtUpdateConfig); UpTxt=String(UpTxt).replace("7.2.0","8.0.0"); if (confirm(configFile+"\n\n"+UpTxt)) { NeedUpdateWizard=800; break; } else { alert("You should remove config.js from the WPIScripts folder\nbefore continuing. Then run WPI again."); self.close(); }*/ break; }insert else if (ver<870) { var bit64=[]; break; } -
WPI 8.6 and beyond bug\bugfix thread
Francesco replied to Kelsenellenelvian's topic in Windows Post-Install Wizard (WPI)
I haven't noticed anything that could affect the installer in the changes and I never had any error myself, maybe it's IE10 or something else causing trouble? -
[Tool] Set default application (properly) on Windows Vista/7
Francesco replied to Francesco's topic in Application Installs
Sure, but having the source code still doesn't guarantee the code hasn't been tampered with, you can only be sure it's clean if you read the code line by line and then compile it yourself. As you can see though VirusTotal reports it being completely clean. I didn't bother adding the sources since it's just 3 API calls for setting the default applications (strangely nobody ever bothered to release a similar tool though) but I attached them to this post. WPI Tool.rar -
Description I made a little tool (attached to this post) that invokes the SetAppAsDefaultAll application registration API to set an application as default on Vista/7. It does exactly the same registration that is performed when you open "Program defaults" and set an application as default. NOTE: it doesn't work on XP/8 because that registration API is only available on Windows Vista and Windows 7. Windows XP and Windows 8 handle application registrations differently (Win8 blocks applications from changing defaults and XP instead has several different ways of which I can't figure if there is a proper one and which one it is). Syntax SetAppAsDefaultAll.exe /Action=SetAppAsDefaultAll /ProgID="Program Id"You can find the Program Id value you need in the HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications registry key. Examples To set the latest Windows Photo Gallery 2012 as default: SetAppAsDefaultAll.exe /Action=SetAppAsDefaultAll /ProgID="WindowsLive.PhotoGallery.16.4"To set Windows Media Player as default: SetAppAsDefaultAll.exe /Action=SetAppAsDefaultAll /ProgID="Windows Media Player"To set VLC as default: SetAppAsDefaultAll.exe /Action=SetAppAsDefaultAll /ProgID="VLC"Extra The tool also supports waiting for a window to open (/Action=WaitForWindow /WindowName="Window Name" /Timeout=seconds) and closing a windowed application properly by sending WM_CLOSE to the window (/Action=CloseWindow /WindowName="Window Name"). SetAppAsDefaultAll.exe
-
Description An alternative to abruptly terminating processes with TASKKILL. Changes In jscript.js before function TimedWaitForProgram(ImageName,HowLong)add function TimedWaitForWindow(WindowName,HowLong){ position="jscript.js"; whatfunc="TimedWaitForWindow()"; RunCmd('"' + wpipath + '\\Tools\\WPI Tool.exe" /Action=WaitForWindow /WindowName="' + WindowName + '" /Timeout=' + HowLong, false, true);}In configwizard.js replace CommandsMenuBar.addNewChild("jscript_dos", 3, "jscript_setEnvVar", "setEnvVar()", false, "", ""); CommandsMenuBar.addNewChild("jscript_dos", 4, "jscript_removeEnvVar", "removeEnvVar()", false, "", ""); CommandsMenuBar.addNewChild("jscript_dos", 5, "jscript_FormatDrive", "FormatDrive()", false, "", "");with CommandsMenuBar.addNewChild("jscript_dos", 3, "jscript_TimedWaitForWindow", "TimedWaitForWindow()", false, "", ""); CommandsMenuBar.addNewChild("jscript_dos", 4, "jscript_setEnvVar", "setEnvVar()", false, "", ""); CommandsMenuBar.addNewChild("jscript_dos", 5, "jscript_removeEnvVar", "removeEnvVar()", false, "", ""); CommandsMenuBar.addNewChild("jscript_dos", 6, "jscript_FormatDrive", "FormatDrive()", false, "", "");and CommandsMenuBar.addNewChild("cmd_other", 3, "other_sleep", "Sleep", false, "", ""); CommandsMenuBar.addNewChild("cmd_other", 4, "other_reboot", "Reboot", false, "", "");with CommandsMenuBar.addNewChild("cmd_other", 3, "other_closewindow", "CloseWindow", false, "", ""); CommandsMenuBar.addNewChild("cmd_other", 4, "other_sleep", "Sleep", false, "", ""); CommandsMenuBar.addNewChild("cmd_other", 5, "other_reboot", "Reboot", false, "", "");and before case 'jscript_CreateRegKey':add case 'jscript_TimedWaitForWindow': HandleCommandsSelectionMenu('{JSCRIPT}=TimedWaitForProgram("Setup",10)'); break;and before case 'other_sleep':add case 'other_closewindow': HandleCommandsSelectionMenu("{CLOSEWINDOW} WindowName"); break;In installer.js before case 'SLEEP':add case 'CLOSEWINDOW': cmd="\"" + wpipath + "\\Tools\\WPI Tool.exe\" /Action=CloseWindow /WindowName=\"" + cmd + "\""; fsoCmd=true; break;In the Tools folder add the WPI Tool.exe attached to this post WPI Tool.exe