AlBundy33
MemberContent Type
Profiles
Forums
Events
Everything posted by AlBundy33
-
Tip for running WPI from network-share...
AlBundy33 replied to AlBundy33's topic in Windows Post-Install Wizard (WPI)
Just a modified version of my script: @ECHO OFF SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION SET SHARE= IF NOT "%~1"=="" SET SHARE=%~1 IF "%SHARE%"=="" ( TITLE Running local WPI... CALL :RUN ) ELSE ( TITLE Running WPI from "!SHARE!"... PUSHD "!SHARE!" ECHO.Mounting "!SHARE!" to "!CD!"... CALL :RUN ECHO.Unmounting network-drive... POPD ) GOTO :END :RUN PUSHD WPI ECHO.Starting WPI... START /wait wpi.hta POPD GOTO :END :END Put this script (RunWPI.cmd) to WPI-parent-directory (in WPI it's called %ROOT%). If you start the script without arguments your local WPI will be started - but if you start the script with an share (e.g. \\SERVER\SHARE) as argument, WPI will be started from SHARE (\\SERVER\SHARE must contains WPI). Best regards Al -
5.6 and future releases wishlist
AlBundy33 replied to Kelsenellenelvian's topic in Windows Post-Install Wizard (WPI)
Feature-Request: It should be possible to set the full path to a picture. e.g. picf[pn]=['%ROOT%\Apps\MyApp\MyAppImage.png'] Linebreaks (<b>) doesn't work correctly in desc[pn]. Al -
How can I add linebreak to descriptions?
AlBundy33 replied to AlBundy33's topic in Windows Post-Install Wizard (WPI)
Unfortunately this also doesn't work correctly (and it's no valid HTML). I tried it with <p/> and <p>...</p> which works correctly but there are the linespacings to big. Al [EDIT] If found a workaround for this Problem: <table class="opTxt"><tr><td nowrap>Line 1.</td></tr><tr><td nowrap>Line 2.</td></tr><tr><td nowrap>Very very very very very very very very long line</td></tr></table> But now I need to know the right css-class to display the text. Can anybody help me to find it out? [/EDIT] -
I tested my unattended DVD in VMWare Player an saw that at the end of all installs (after about 2 hours) mshta.exe needs about 100MB of memory. --> And so it takes a long time (only tested in VMWare Player) until WPI finishes because it has to wait until all of the memory is freed up. Maybe it's possible to do a CollectGarbage(); at some positions in WPI to periodical free up the memory? Greetings Al
-
WPI 5.1 Wish List
AlBundy33 replied to Kelsenellenelvian's topic in Windows Post-Install Wizard (WPI)
An information about how many errors occured would be very nice at the end of the log. Greetings Al -
Tip for running WPI from network-share...
AlBundy33 replied to AlBundy33's topic in Windows Post-Install Wizard (WPI)
Thanks for your reply - I forgot that PUSHD needs enabled command extensions because they are enabled by default at my system. With this script the extension will be enabled for the execution. @ECHO OFF SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION SET SHARE=\\SERVER\SHARE TITLE Running WPI from "!SHARE!"... PUSHD "!SHARE!" ECHO.Mounting "!SHARE!" to "!CD!"... PUSHD WPI ECHO.Starting WPI... START /wait wpi.hta POPD ECHO.Unmounting network-drive... POPD Greetings Al -
WPI 5.1 Wish List
AlBundy33 replied to Kelsenellenelvian's topic in Windows Post-Install Wizard (WPI)
A Option to hide all commands would be very nice. For Example: I have a setup.cmd with lots of commands and I don't want to see the console if the Batch is called. Other example: Sometimes I have to uncompress a archive with 7za - which also shows a console window. I know that I can use CMDOW but an option in WPI like "suppress console windows" would be very nice. ;-) A hint like "Installing program 1 of 234" would be very nice on the installer window. Greetings Al -
If you want to run WPI from a network-share I found a simple solution. pre-condition is that you don't use absolute path-names in your commands - you have to use variables like %CDROM% or %WPIPATH%. If you use such variables you can use the following Script to run WPI from a network-share. @ECHO OFF ::This should be the path to WPI on the share SET SHARE=\\SERVER\SHARE ::mount share to a free drive and change directory to it. After Script it finished the drive will be unmounted PUSHD "%SHARE%" START /wait WPI.hta POPD That's all Greetings Al
-
Problem with enabled UseTransitions...
AlBundy33 posted a topic in Windows Post-Install Wizard (WPI)
On slow machines (e.g. in VMWare) I hove following problem: If UseTransitions is set to true, click some pages forward and try to select a program WPI switches back to third page. :-/ If I disable UseTransitions I works without problems. :-/ Al -
These are my configs: cmdlines.txt [COMMANDS] "\Software\WPI_RunOnce.cmd" WPI_RunOnce.cmd REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\999" /v 1 /d "%~dp0WPI\WPI.hta" /f After Windows-Setup is finished an the PC reboots WPI starts normaly. But if I start to install my Programms I get only Errors (red cross or question mark before application name). :-/ After WPI is ready Windows starts its own RunOnceEx-Commands (e.g. Internet Explorer). --> I thought WPI should the last command (RunOnceEx\999). ?!? After Windows is ready and I can work with the current session I can start WPI and install all programs without Problems. ?!? Does anybody know this Poblem (I'm using WPI 5.0 Final)? Greetings Al
-
Why does %CDROM% not work in ExecuteBefore?
AlBundy33 replied to AlBundy33's topic in Windows Post-Install Wizard (WPI)
The error seems to be because a bug in installer.js - with this installer.js it should work: // // Date Last Modified: June 9, 2006 // // Modified By: Mark Ritter (mritter) and Djé // function ShowInstaller() { position="installer.js"; whatfunc="ShowInstaller()"; var txt = new String(); txt==""; var line = new String(); line=""; var iWidth, iHeight; iWidth=328+ExtraWidth; iHeight=410+ExtraHeight; if (PlayAudioInInstaller) iHeight +=62; strFile=wpipath+"Common\\Installer.hta"; if (!FileExists(strFile)) { alert("Could not open '"+strFile+"'."); ExitWPI(); } InstallWindow=window.showModelessDialog(strFile,window,"dialogLeft:25;dialogTop:25;dialogWidth:"+iWidth+"px;dialogHeight:"+iHeight+"px;center:no;help:no;resizable:no;scroll:no;status:no;"); Pause(0,100); InstallWindow.document.getElementById("InstallHeaderText").innerHTML=getText(InstallerHeaderTxt); InstallWindow.document.getElementById("installLayer").style.cursor='wait'; if (PlayAudioInInstaller) { InstallWindow.document.getElementById("MediaPLayer").style.display='block'; } } function CheckInstaller() { position="installer.js"; whatfunc="CheckInstaller()"; if (InstallWindow.closed) { ShowInstaller(); } } function CloseInstaller() { position="installer.js"; whatfunc="CloseInstaller()"; WshShell.RegWrite("HKEY_CURRENT_USER\\Software\\WPI\\Installer\\InstallFinished","TRUE"); CloseLogFile(); Pause(2,0); return; } function InstallPrograms() { position="installer.js"; whatfunc="InstallPrograms()"; InstallShell = new ActiveXObject("WScript.Shell"); var ce=0; programs = new Array(); htm(); // Turn off tips StopAudio(); window.resizeTo(0,0); window.moveTo(25,25); for(i=1; prog[i] != null; i++) { if (forc[i] != null && forc[i]=="yes" && ReallyForce) setChecked(i); if (document.getElementById("chkbox"+i) && document.getElementById("chkbox"+i).checked) programs[programs.length++] = new program(i); } topLine=0; currentLine=0; totalLine=programs.length; if (totalLine==0) return; if (!InstallByCategory) programs.sort(SortByOrdr); OpenLogFile(); WriteLogLinePlain("\nList of programs to be installed:"); for(i=0; programs[i] != null; i++) WriteLogLinePlain(" "+programs[i].prog); if (ExecuteBeforeEnabled && ExecuteBefore!=null) { programs.splice(0,0,new program(999998)); programs[0].prog="Execute Before"; programs[0].uid="EXECUTE_BEFORE"; programs[0].ordr=999998; programs[0].cat="WPI Built In"; programs[0].cmd1=ExecuteBefore; totalLine++; } if (ExecuteAfterEnabled && ExecuteAfter!=null) { programs.splice(programs.length,0,new program(999999)); programs[programs.length-1].prog="Execute After"; programs[programs.length-1].uid="EXECUTE_AFTER"; programs[programs.length-1].ordr=999999; programs[programs.length-1].cat="WPI Built In"; programs[programs.length-1].cmd1=ExecuteAfter; totalLine++; } ShowInstaller(); CheckInstaller(); for(i=0; i<programs.length && programs[i] != null; i++) { ce++; programs[i].success=false; programs[i].fail=false; UpdateInstallList(ce,programs); StartLogEntry(programs[i]); InstallOne(i,'regb'); CheckInstaller(); for(j=1; j<=6; j++) { InstallOne(i,'cmd'+j); CheckInstaller(); } CheckInstaller(); InstallOne(i,'rega'); WriteLogLine("Finished installation"); UpdateProgressBar(Math.round((ce/programs.length)*100)); Pause(0,250); } CheckInstaller(); UpdateInstallList(10000000,programs); Pause(0,250); CheckInstaller(); if (RestartComputer) { cmdLine='shutdown.exe -r -f -t '+RestartSeconds+' -c "To finish installations WPI will now reboot in '+RestartSeconds+' seconds..."'; InstallShell.Run(cmdLine,1,false); } CloseInstaller(); } function InstallOne(item,cmdName) { position="installer.js"; whatfunc="InstallOne()"; var cmd, ReturnCode, result; CheckInstaller(); cmd=eval('programs['+item+'].'+cmdName); if (cmd == null || (cmdLine=path(cmd)) == '') return; if (cmdName=='regb' || cmdName=='rega') { if (!FileExists(cmdLine)) { programs[i].fail=true; cmdName=(cmdName=='regb') ? 'Reg Before' : (cmdName=='rega') ? 'Reg After' : cmdName; WriteLogLine(cmdName+' '+result+' (returned code '+ReturnCode+'): RegEdit /S "'+cmdLine+'"'); return; } if (cmdLine.indexOf(" ") != -1 && cmdLine.substr(0,1) != '"') cmdLine='"'+cmdLine+'"'; cmdLine="RegEdit /S "+cmdLine; } else cmdLine=handleCommand(cmdLine); try { ReturnCode=InstallShell.Run(cmdLine,1,true); result='Success'; programs[i].success=true; } catch(ex) { result='Fail'; programs[i].fail=true; } cmdName=(cmdName=='regb') ? 'Reg Before' : (cmdName=='rega') ? 'Reg After' : cmdName; WriteLogLine(cmdName+' '+result+' (returned code '+ReturnCode+'): "'+cmdLine+'"'); } function handleCommand(cmd) { position="installer.js"; whatfunc="handleCommand()"; var firstToken; if (cmd.indexOf(" ") != -1 && cmd.substr(0,1) != '"') { firstToken = cmd.substr(0,cmd.indexOf(" ")); switch(firstToken.toUpperCase()) { case 'FILECOPY': cmd = ("CMD /C " + cmd.replace(/FILECOPY/gi,'copy')); break; case 'DIRCOPY': cmd = ("CMD /C " + cmd.replace(/DIRCOPY/gi,'xcopy') + " /I /E /Y"); break; case 'RENAME': cmd = ("CMD /C " + cmd.replace(/RENAME/gi,'ren')); break; case 'MAKEDIR': cmd = ("CMD /C " + cmd.replace(/MAKEDIR/gi,'md')); break; case 'DELETE': cmd = ("CMD /C " + cmd.replace(/DELETE/gi,'del')); break; default: if (FileExists(cmd)) cmd='"'+cmd+'"'; break; } } return (cmd); } function UpdateInstallList(pos,progs) { position="installer.js"; whatfunc="UpdateInstallList()"; var line, box; CheckInstaller(); box=""; if (progs.length<=maxLines) { for(line=0; line<progs.length; line++) { if (line+1==pos) { box+='<img src="../themes/'+Theme+'/spacer.gif" border="0" width="13" height="1">'; box+='<font style="font-size:12px;"><b>'+progs[line].prog+'</b></font>'; } else { if (line+1<pos) { if (progs[line].success && !progs[line].fail) { box+='<img src="../themes/'+Theme+'/InstallSuccess.gif" border="0" width="11" height="11">'; } if (!progs[line].success && progs[line].fail) { box+='<img src="../themes/'+Theme+'/InstallFail.gif" border="0" width="11" height="11">'; } if (progs[line].success && progs[line].fail) { box+='<img src="../themes/'+Theme+'/InstallPartial.gif" border="0" width="11" height="11">'; } if (!progs[line].success && !progs[line].fail) { box+='<img src="../themes/'+Theme+'/InstallFail.gif" border="0" width="11" height="11">'; } } else { box+='<img src="../themes/'+Theme+'/spacer.gif" border="0" width="11" height="1">'; } box+='<img src="../themes/'+Theme+'/spacer.gif" border="0" width="2" height="1">'; box+='<font style="font-size:12px;">'+progs[line].prog+'</font>'; } box+='<br>'; } } else { currentLine++; if (currentLine>centerLine && topLine+maxLines<totalLine) { currentLine=centerLine; topLine++; } for(line=topLine; line<topLine+maxLines; line++) { if (line+1==pos) { box+='<img src="../themes/'+Theme+'/spacer.gif" border="0" width="13" height="1">'; box+='<font style="font-size:12px;"><b>'+progs[line].prog+'</b></font>'; } else { if (line+1<pos) { if (progs[line].success && !progs[line].fail) { box+='<img src="../themes/'+Theme+'/InstallSuccess.gif" border="0" width="11" height="11">'; } if (!progs[line].success && progs[line].fail) { box+='<img src="../themes/'+Theme+'/InstallFail.gif" border="0" width="11" height="11">'; } if (progs[line].success && progs[line].fail) { box+='<img src="../themes/'+Theme+'/InstallPartial.gif" border="0" width="11" height="11">'; } if (!progs[line].success && !progs[line].fail) { box+='<img src="../themes/'+Theme+'/InstallFail.gif" border="0" width="11" height="11">'; } } else { box+='<img src="../themes/'+Theme+'/spacer.gif" border="0" width="11" height="1">'; } box+='<img src="../themes/'+Theme+'/spacer.gif" border="0" width="2" height="1">'; box+='<font style="font-size:12px;">'+progs[line].prog+'</font>'; } box+='<br>'; } } CheckInstaller(); InstallWindow.document.getElementById("Install_prog").innerHTML=box; } function ClearProgressBar() { position="installer.js"; whatfunc="ClearProgressBar()"; CheckInstaller(); InstallWindow.document.getElementById("PB_text").innerHTML=""; CheckInstaller(); InstallWindow.document.getElementById("PB_bar").style.width=0; } function UpdateProgressBar(value) { position="installer.js"; whatfunc="UpdateProgressBar()"; if (value>=0 && value<=100) { if (value>9) { CheckInstaller(); InstallWindow.document.getElementById("PB_text").innerHTML=parseInt(value)+"%"; } CheckInstaller(); InstallWindow.document.getElementById("PB_bar").style.width=(value*3)+"px"; } } Greetings Al -
I want to use %CDROM% in the ExecuteBefore-Option but I get an error where the command should be executed. :-( This is my entry in useroptions.js: ExecuteBefore=['%CDROM%\\copywintools.cmd']; or ExecuteBefore=['%ROOT%\\copywintools.cmd']; And this is my modified FindCDRom(): function FindCDRom() { position = "generate.js"; whatfunc="FindCDRom()"; if (foundCDdrv) return cddrv; cddrv = fso.GetAbsolutePathName(".\\.."); debug("Found Root as folder " + cddrv,1,2); foundCDdrv = true; return cddrv; } This function works great on "normal" installs - but not on ExecuteBefore. :-/ I also tried this, without problems - except ExecuteBefore (I get the same error like above). :-( generate.js ... function GetRootDir() { position = "generate.js"; whatfunc="GetRootDir()"; root = fso.GetAbsolutePathName(".\\.."); debug("Found Root as folder " + root,1,2); return root; } ... function replpath(v) { position="generate.js"; whatfunc="replpath()"; var rs = new String(); cddrv = FindCDRom(); root = GetRootDir(); sysdrv = WshEnv("SYSTEMDRIVE") + "\\"; windir = WshEnv("WINDIR") + "\\"; programfiles = WshEnv("PROGRAMFILES") + "\\"; temp = WshEnv("TEMP") + "\\"; sysdir = WshEnv("WINDIR") + "\\system32\\"; allusersprofile = WshEnv("ALLUSERSPROFILE") + "\\"; userprofile = WshEnv("USERPROFILE") + "\\"; appdata = WshEnv("APPDATA") + "\\"; commonprogramfiles = WshEnv("CommonProgramFiles") + "\\"; rs = v; rs = rs.replace(/%wpipath%/gi,wpipath); rs = rs.replace(/%cdrom%/gi, cddrv); rs = rs.replace(/%root%/gi,root); rs = rs.replace(/%systemdrive%/gi,sysdrv); rs = rs.replace(/%windir%/gi, windir); rs = rs.replace(/%programfiles%/gi,programfiles); rs = rs.replace(/%sysdir%/gi, sysdir); rs = rs.replace(/%temp%/gi, temp); rs = rs.replace(/%allusersprofile%/gi, allusersprofile); rs = rs.replace(/%userprofile%/gi,userprofile); rs = rs.replace(/%appdata%/gi, appdata); rs = rs.replace(/%commonprogramfiles%/gi, commonprogramfiles); return rs; } The errormessage is: JavaScript Error Report Message: 'undefined' ist Null oder kein Objekt. Url: file://D:\\System\\WPI\WPI.hta File: generate.js Function: GetRootDir() Line: 150 But Line 150 is rs = rs.replace(/%cdrom%/gi, cddrv);?!? If I remove my function and use the default-FindCDRom() I get the same error on a Line between 140 and 150 (this is in replpath()). I also tried a original WPI-installation but I get the same error. :-/ Is this a WPI-bug? Again: All examples working great except for ExecuteBefore (ExecuteAfter not testet yet). Can anybody help to fix this problem? Thanks Al
-
I integrated .NET 1.1 in svcpack.inf like this (which worked without problems): "dotnetfx.exe /Q /C:""msiexec -i netfx.msi /quiet /norestart /qn ADDLOCAL=ALL REBOOT=ReallySuppress""" "langpack.exe /Q /C:""msiexec -i langpack.msi /quiet /norestart /qn ADDLOCAL=ALL REBOOT=ReallySuppress""" "vjredist.exe /Q /C:""msiexec -i jsredist.msi /quiet /norestart /qn ADDLOCAL=ALL REBOOT=ReallySuppress""" "vjredist-LP.exe /Q /C:"msiexec -i jsredist.msi /quiet /norestart /qn ADDLOCAL=ALL REBOOT=ReallySuppress""" and tried this for 2.0 "dotnetfx.exe /Q /C:""msiexec -i netfx.msi /quiet /norestart /qn USING_EXUIH=1 ADDLOCAL=ALL REBOOT=ReallySuppress""" "langpack.exe /Q /C:""msiexec -i langpack.msi /quiet /norestart /qn USING_EXUIH=1 ADDLOCAL=ALL REBOOT=ReallySuppress""" "vjredist.exe /Q /C:""msiexec -i jsredist.msi /quiet /norestart /qn USING_EXUIH=1 ADDLOCAL=ALL REBOOT=ReallySuppress""" "vjredist-LP.exe /Q /C:"msiexec -i langpack.msi /quiet /norestart /qn USING_EXUIH=1 ADDLOCAL=ALL REBOOT=ReallySuppress""" But since 2.0 it the Framework is not installed during the svcpack.inf-Installs. :-/ Doeas anybody know how I can install .NET 2.0 with svcpack.inf? Al
-
Which programs did you install with WPI?
AlBundy33 replied to AlBundy33's topic in Windows Post-Install Wizard (WPI)
Here a the links where you can find all the apps in my list. Al bookmarks.7z -
Which programs did you install with WPI?
AlBundy33 replied to AlBundy33's topic in Windows Post-Install Wizard (WPI)
Why it doesn't work? Al -
Which programs did you install with WPI?
AlBundy33 replied to AlBundy33's topic in Windows Post-Install Wizard (WPI)
Config.7z Config.log: The Logfile generated by my batch-script which generates the config.js config.js: the generated config.js bookmarks.7z (in a later post) bookmarks.html: list of link where you can find the programs. Greetings Al config.7z -
Make WPI install straight from cd
AlBundy33 replied to Benzal's topic in Windows Post-Install Wizard (WPI)
Look at FindCDRom() in your generate.js and you will see how the CDROM-driveletter is determined. In your cmd1-6 you should now use %CDROM% instead of your CDROM-driveletter. Hope this helps (I didn't try it). Greetings Al -
1. Have you checked if c:\install\WPI exist? 2. Have you checked the OemPreinstall is set to Yes in your winnt.sif (in [unattended]-section). Greetings Al
-
How can I register DivX Pro unattended?
AlBundy33 replied to AlBundy33's topic in Application Installs
I've already seen this topic but I only viewed the first page (I didn't recognized that there is a second page). Thanks anyway Al -
I get DivX Pro and want to do an unattended installation, which is no problem. But how do I have to register the Trial-version? --> I found no Registrykey. Can anybody help? Al