AlBundy33 Posted August 17, 2008 Share Posted August 17, 2008 (edited) Some Ideas:And two new Buttons "First" and "Last" to go quickly to the first or last page.Maybe a combo (or another way) to go quickly to a category would be enoughA hint selected/app_count on each category would also be very nice.The same hint should be displayed during install (current_app/apps_to_install) maybe instead of the percentage.Also the time (the difference from "start install" to now) would be interessting.--> instead of 10% the progress should be displayed like 5/50 5:28minHaven't tried it yet but is it possible to scroll up during install to the first entry?--> e.g. to check if all apps were installed correctly during install. Maybe also a scroll-lock would be needed.Al Edited August 17, 2008 by AlBundy33 Link to comment Share on other sites More sharing options...
belivakov Posted August 17, 2008 Share Posted August 17, 2008 (edited) Add Sub-Level supprt like:+Registry Tweaks +Windows Tweaks +Explorer Tweaks . . +Hardware Tweaks etc. Edited August 17, 2008 by belivakov Link to comment Share on other sites More sharing options...
AlBundy33 Posted August 20, 2008 Share Posted August 20, 2008 Maybe you want to add an option to clear Temp-files.AlThis script tries to delete all temp-files and ignores files that can not be deleted.clearTemp.cmd@ECHO OFFCALL :CLEAN_DIR "%TEMP%"CALL :CLEAN_DIR "%TEMP%\..\Temporary Internet Files"CALL :CLEAN_DIR "%WINDIR%\Temp"CALL :CLEAN_DIR "%USERPROFILE%\Recent"CALL :CLEAN_DIR "%USERPROFILE%\Cookies"GOTO :EOF:CLEAN_DIR IF "%~1"=="" ( ECHO Kein Parameter angegeben. GOTO :EOF ) IF NOT EXIST "%~1\" ( ECHO Verzeichnis "%~1" existiert nicht GOTO :EOF ) DEL /S /Q "%~1\*.*" FOR /F "tokens=*" %%D IN ('DIR "%~1\" /A:D /B') DO RD /S /Q "%~1\%%~D" GOTO :EOF Link to comment Share on other sites More sharing options...
TwoJ Posted August 25, 2008 Share Posted August 25, 2008 (edited) Things are really moving along! v7 is still bigger & better!Now that the wmi calls to determine OS type, version, etc can be used to determine different files for different conditions, i notice that there is now a need to have multiple conditions statements & greyed conditions;Right now i believe you have the 1 conditional statement and 1 greyed condition that resolves to a true/false and displays the line accordingly. It would also be necessary to have a conditional priority where condition1 is applied first condition2, etc.it might be good to have a dropdown box with some choices based on the conditions, such as choice1=Hide installer, choice2=Display in colour1, choice3 Diplay in colour2Also i wanted to know can you perform operations sunch as AND LIKE OR operators like in wmi? for the conditional statements, ie [getOSver==xp" AND getOSlang=='"ENU] to get an english XP system?Update - i just tried some basic operators (AND, OR) in the greyed out condition box and i just got errors, i'm not very good with wmi calls but i know that you can do logical operator calls such as the example above. Do you think its possible to build that into the next release where you can do a greyout or conditional statement based on 1 or more conditions?Also in the changelog you mention that the function isInstalled doesn't work on 2003, is that just because wmi is turned off by default? if it was turned on would it work?thanks again for all the workStill fooling around with it; maybe some more ideasThe isInstalled functions is very nice to determine the software installed, but it does have a few drawbacks1) - its slow - maybe consider using a scan button, if someone wants to test if software is installed then they can leave it auto-on/off or manual scan, that way it wont slow it down unnecessarily2) - i think its picking up the Caption title which is the one that appears in the Add/Remove list however it doesn't always give the version, i forget if or what the handle is but i think there is one that gives the exact version because something like Adobe Flash appears in the add/remove as adobe flash activex - no version #. this might be problematic since it seems you might need some way of doing an iteration, i'm not sureThere is scriptomatic from microsoft and an autoit version that is really good for looking at the wmi handles available-also for wmi - i got burned on this recently to find that some handles are not available on all versions of windows, some like caption are universal but i was using one on vista that i tried on XP and it wasn't available. so just a caution Edited August 25, 2008 by TwoJ Link to comment Share on other sites More sharing options...
mritter Posted August 26, 2008 Share Posted August 26, 2008 Thanks, TwoJ.I will try to write some examples for the manual on conditions. Very few people read it, but.........FileExists() - Does file exist? yes/no!FileExists() - Does the file NOT exist?getOSlang()=="ENU" && getOSVer() != "Vista - lang is english and OS not VistagetOSlang()=="ENU" || getOSVer() != "Vista - lang is english or OS not Vista(getOSlang()=="ENU" && getOSVer() != "Vista) || getFreeRAM()>512 - lang is english and OS not Vista, or more than 512MB free RAMThat will get you started. Find more online search. Link to comment Share on other sites More sharing options...
gt7599a Posted September 2, 2008 Share Posted September 2, 2008 A friend of mine helped me improve my WPI (v6.5) by adding the following: I'd love to see these features included in the source of future releases. Code follows below. 1. Added GetFirewallProduct() and GetAntivirusProduct() methods. (registry_dos.js)2. Fixed the code for getting the optical drive letter in defaultWPI(). Now defaults to using WMI, and reverts to the old way if WMI is not present. (core.js)3. Modified getOSver() to use WMI, and to cache the result since this function is called VERY often. (registry_dos.js, globals.js)4. Cached the result of getSPver() as well. (registry_dos.js, rev 19; globals.js)5. Added WMI constants to globals.js. (globals.js)6. Added GetFirewallProduct() and GetAntivirusProduct() methods to condition dropdown boxes. (configwizardtemplate_config.htm)-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+core.js - new defaultWPI function-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+// Set some specific environment variables for WPIfunction defaultWPI(){ position="core.js"; whatfunc="defaultWPI()"; // %wpipath% wpipath = unescape(document.location); wpipath = wpipath.substring(0,wpipath.lastIndexOf("/")); wpipath = wpipath.replace("file:///","").replace(/\//g,"\\"); [^] // Universal Silent Switch Finder USSFcmd=wpipath+"\\Tools\\USSF.exe"; // %root% root=fso.GetParentFolderName(wpipath); // %dospath% if (FileExists(sysdir + "$winnt$.inf")) { var winntinf=fso.OpenTextFile(sysdir + "$winnt$.inf", 1); // It's recorded in the 'dospath' directive of the [data] section of \system32\$winnt$.inf. var matches = winntinf.ReadAll().match(/\ndospath=(.*)/i); winntinf.Close(); if (matches) { dospath=matches[1]; if (dospath.substring(dospath.length - 2, dospath.length - 1)=="\\")//dospath may have a trailing slash ... or not (depending on the location) dospath = dospath.substring(0, dospath.length - 2); // So let's remove it if it's there } }// FYI: x64 stores this file in system32 but since the app that runs your script (mshta.exe) is only 32-bit it references SysWOW64 instead of system32 // %HDD% var a, i, li = new Array(); hdd=""; if (i=wpipath.indexOf(":") != -1 && !ResumeInstall) { var temp; temp=wpipath.substr(0,2); a=DriveType(temp); if (a !="UNKNOWN" && a !="CDROM") // Not UNKNOWN and not CDROM hdd=temp; else hdd=""; } // %CDROM% // First try getting the CD Drive letter from WMI... try { var objWMIService = GetObject("winmgmts:\\\\" + "." + "\\root\\cimv2"); var colItems = objWMIService.ExecQuery("SELECT * FROM Win32_LogicalDisk WHERE DriveType=5", "WQL", wbemFlagReturnImmediately | wbemFlagForwardOnly); var enumItems = new Enumerator(colItems); for (; !enumItems.atEnd(); enumItems.moveNext()) { var objItem = enumItems.item(); cddrv = objItem.DeviceID + "\\"; break; } } catch (ex) // if WMI doesn't work, then revert to the old way { // NOTE: THIS METHOD DOES NOT WORK WITH VISTA li = GetDriveLetters(4); for (i=0; i<li.length; i++) { if (FileExists(li[i]+'\\WPI.HTA') || FileExists(li[i]+'\\WIN51') || FileExists(li[i]+'\\I386\\DRIVER.CAB') || FileExists(li[i]+'\\Sources\\install.wim')) cddrv = li[i]; } if (cddrv=="") { a = fso.GetAbsolutePathName("."); while (a.length>=3) { if (FileExists(a+'\\WPI.HTA')) { cddrv=a; break; } if (a.length==3) break; a = a + "\\.."; a = fso.GetAbsolutePathName(a); } } if (cddrv=="") { try { // this registry value may not exist, and will throw an exception in that case cddrv = WshShell.RegRead("HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Setup\\SourcePath") + "\\"; cddrv = cddrv.substr(0,3); } catch (ex) { ; } } } // %OSLANG% var sLang = '', Enum, DtoH; CreateLocalArray(); // OSLanguage = 1033, 1036, .... var OSProps = GetObject("winmgmts:").InstancesOf("Win32_OperatingSystem"); // Language ID in Dec sLang = new Enumerator(OSProps).item(); Enum = sLang.OSLanguage; DtoH = DecToHex(Enum); while (DtoH.length<4) DtoH = "0" + DtoH+""; for (var x=0; x<arrOSLang.length; x++) { if (arrOSLang[x].LCID == DtoH) { oslang=arrOSLang[x].TLA; break; } }}-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+globals.js - added to end of file-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+// WMI constants var wbemFlagReturnImmediately = 0x10; var wbemFlagForwardOnly = 0x20;// registry_dos.js var NOT_FOUND = "Not found"; var szOSVerCache = NOT_FOUND; var szServicePackCache = NOT_FOUND;-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+registry_dos.js - new getOSver() and getSPver()-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+function getOSver(){ position="registry_dos.js"; whatfunc="getOSver()"; if ( szOSVerCache == NOT_FOUND ) // this function is called often - get it once and cache the result { var ver = ""; try // try using WMI first... { var objWMIService = GetObject("winmgmts:\\\\" + arrComputers[i] + "\\root\\CIMV2"); var colItems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem", "WQL", wbemFlagReturnImmediately | wbemFlagForwardOnly); var enumItems = new Enumerator(colItems); for (; !enumItems.atEnd(); enumItems.moveNext()) { var objItem = enumItems.item(); ver = objItem.Caption; if (ver.indexOf("Vista") >= 0) szOSVerCache = "Vista"; if (ver.indexOf("Server 2003") >= 0) szOSVerCache = "03"; if (ver.indexOf("XP") >= 0) szOSVerCache = "XP"; if (ver.indexOf("2000") >= 0) szOSVerCache = "2K"; // WMI is not likely to be installed on older OS's - if WMI is not present, then we revert to the old code... } } catch (ex) // if WMI doesn't work, try checking the registry directly { try { ver=WshShell.RegRead("HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\CurrentVersion"); } catch (ex1) { try { ver=WshShell.RegRead("HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Version"); } catch (ex2) { ; } } if (ver=="6.0") szOSVerCache ="Vista"; if (ver=="5.2") szOSVerCache ="03"; if (ver=="5.1") szOSVerCache ="XP"; if (ver=="5.0") szOSVerCache ="2K"; if (ver=="4.0") szOSVerCache ="NT"; if (ver=="Windows 98") szOSVerCache ="98"; if (ver=="Windows Millennium Edition") szOSVerCache ="ME"; if (ver=="Windows 95") szOSVerCache = "95"; } } return szOSVerCache;}function getSPver(){ position="registry_dos.js"; whatfunc="getSPver()"; if ( szServicePackCache == NOT_FOUND ) { var sp = ""; try { sp=WshShell.RegRead("HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\CSDVersion"); } catch (ex) { ; } if (sp != "") { szServicePackCache = sp.substr(sp.length-1,1); } } return szServicePackCache;}-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+registry_dos.js - newly added firewall and antivirus methods-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+//=============================================================================// Firewall and AntiVirus methods//// These functions use WMI to check what products are registered with the// Windows Security Center. It is possible that a Firewall or AntiVirus product// is installed, but is not registered with the Windows Security Center// (particularly with older legacy applications).//// These methods are not likely to be called often, so probably no need to cache.//function getFirewallProduct(){ position="registry_dos.js"; whatfunc="getFirewallProduct()"; var FirewallProductName=""; try { var objWMIService = GetObject("winmgmts:\\\\" + "." + "\\root\\SecurityCenter"); var colItems = objWMIService.ExecQuery("SELECT * FROM FirewallProduct", "WQL", wbemFlagReturnImmediately | wbemFlagForwardOnly); var i = 0; var enumItems = new Enumerator(colItems); for (; !enumItems.atEnd(); enumItems.moveNext()) { i = i + 1; var objItem = enumItems.item(); FirewallProductName = objItem.displayName; break; // just get the first one and return } } catch (ex) {// window.alert("getFirewallProduct - EXCEPTION CAUGHT!"); // for testing purposes ; } return FirewallProductName;}function getAntiVirusProduct(){ position="registry_dos.js"; whatfunc="getAntiVirusProduct()"; var AVProduct=""; try { var objWMIService = GetObject("winmgmts:\\\\" + "." + "\\root\\SecurityCenter"); var colItems = objWMIService.ExecQuery("SELECT * FROM AntiVirusProduct", "WQL", wbemFlagReturnImmediately | wbemFlagForwardOnly); var enumItems = new Enumerator(colItems); for (; !enumItems.atEnd(); enumItems.moveNext()) { var objItem = enumItems.item(); AVProduct = objItem.displayName; } } catch (ex) {// window.alert("getAntiVirusProduct - EXCEPTION CAUGHT!"); // for testing purposes ; } return AVProduct;}-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+configwizardtemplate_config.htm - added following to both cboConditions1 and cboConditions2 sections for dropdown boxes.-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ <optgroup label="Security"> <option value="getAntiVirusProduct()">getAntiVirusProduct()</option> <option value="getFirewallProduct()">getFirewallProduct()</option> </optgroup> Link to comment Share on other sites More sharing options...
mritter Posted September 10, 2008 Share Posted September 10, 2008 Sweet! I like it! I was wondering about firewall stuff myself. Will definetly work those in! Link to comment Share on other sites More sharing options...
TwoJ Posted September 13, 2008 Share Posted September 13, 2008 Here are some ideas that i think might expand some of wpi functionality1) have some sort of export/import function, a lot of the applications i put on wpi are freeware stuff, that i think might be good if there was a central repository that people could just download the latest vesions and import into wpi. also if they could include conditions such as for x86 or x64 versions, etc. It doesn't seem very efficient that everyone has to create their own versions when a lot could benefit from one or 2 versions.2) as i mentioned in another post, i think the conditions need to be beefed up so that their are multiple conditions, such as if condition A then highlight in x colour, if condition B highlight in y colour. this would be good for cases where we are having x86/x64 systems as well as xp/vista, so that for a program like 7zip we could say if x64 and vista then install 7zipx64vista.exe, else x64&XP install 7zipx64XP.exe, etc3) i like to use wpi for updating software so i know there has been a lot of work done in v7 to start using wpi, but if there was a way to determine the version of applications that are on wpi with the presently installed versions installed on the system and to highlight or select only the updates needed to install in order to bring the software up to date. there are 2 programs that i know, filehippo update checker, and software informer that can scan the software installed and let you know if there are updated versions, but i would like wpi to also install said updates4) For the logest time i have struggled with getting programs to install the way i want, i know there are the switches to do silent installs, but a lot of times they are installing extra crap (toolbars, shorcuts, settings, etc) that i don't want. What i was thinking was something like an autoit script to launch the install and then read from a settings.ini file for each program to fill in all the possible choices of the normal attended installation, and then any post -install choices such as add/delete icons, shortcuts, etc. This means that all programs would need a settings.ini to match the installers but it would insure that the programs are really getting installed the way you want instead of trying to repack the files yourself, hope that someone else's silent installer does want you want, or do some sort of customized post-install cleanup.Some ideas for your considerationthanks Link to comment Share on other sites More sharing options...
Kelsenellenelvian Posted September 13, 2008 Author Share Posted September 13, 2008 #1 look at raynvm's site and wincert.net... Theyre are already ALOT of WPI ready addons for integration with the RVMi#2 Its on mritters todo list#3 Someone (Why not you?) Would have to compile and mantain a list of well over hundreds of applications and keep it updated daily. It has been discussed in the past and quite frankly we don't get paid enough...#4 See #3 nearly the same applies. Link to comment Share on other sites More sharing options...
mritter Posted September 17, 2008 Share Posted September 17, 2008 TwoJ,#1) That has been asked for several times. It really come down to who is going to maintain this HUGE databsse of programs? Not me or Kels. Maybe if people would make a donation to keep me happily programming away it might get some consideration. It all comes down to the forum users: ask for anything to be added and I will look into it, but don't expect the impossible from me. If you have server space and some time, talk to me and I will help you get started. I don't get paid for this, that's up to you guys, I have a full time job and a life outside of WPI. I got burned out once and took almost a year off. I am trying to pace myself better this time.#2) I understand what you are asking for now. For now, no, that will not happen. If you have 2 versions of the same program for x86 and x64, then put a Deps check in for each entry with a getmshtaBits()==64 or getBits()==64 check. Dont use Grey Condition, just the regular so it will be hidden.#3) The problem with checking for installed programs' version could be tweaked to not just look at the caption...if it has such details. I agree it would be more reliable. The next problem is you can't do a getFileVersion() on an installer and expect to get an accurate reading. I tried. FileHippo has a PAID staff maintaining that database.#4) Same answer as above: there are only 24 hours in a day........If you, or anyone else, wants to starts an online database I will be more than happy to write the code to support it. I love the idea, I just don't have the time to maintain it. It will have to be a long-term commitment; you can't drop out without a replacement after 2 months. All or nothing. Link to comment Share on other sites More sharing options...
icnocop Posted September 18, 2008 Share Posted September 18, 2008 Hi.I would like to request some improvements in error reporting wherever there is a try{}catch(ex){}.For example, in WPI_v7.1.1, installer_reboot.js, line 28:alert(getText(NotOpenRebootFile)+"\n"+rebootFile);would be better if it would report the exception details as follows:alert(getText(NotOpenRebootFile)+"\n"+rebootFile + "\nError Number: " + ex.number + "\nError Description: " + ex.description);Thank you. Link to comment Share on other sites More sharing options...
jinkazama Posted September 23, 2008 Share Posted September 23, 2008 I have a very stupid request....A random play for media player Link to comment Share on other sites More sharing options...
mritter Posted September 23, 2008 Share Posted September 23, 2008 Above 2 messages are on the To Do List. Link to comment Share on other sites More sharing options...
TwoJ Posted September 24, 2008 Share Posted September 24, 2008 Hi Kel & mritterThanks for the repies, and i completly understand, me too, i've got the day job and the wife and other responcibilities which come first before spending time on this. Sometimes i find there are people with more talent and skills than i (which there seems lots of :-) ) and sometimes they seem to lacking ideas or direction for their projects. I on the otherhand seem to have ideas or projects that lack time and/or skills. At this point there seems a few projects that are in need of development and i understand completly the amount of time some of them would take to create and maintain.What i was thinking of was a software database that would hold the most recent versions of software, include whether the software works in x86 & x64 mode, whether there exists a X64 version, whether it is freeware/trialware/etc. If anyone knows if something already exist it would be much apprciated to be pointed to that.fun over - back to work Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now