Initially I couldn't get Second Life to work on my wife's desktop system, which has Windows 7 and an ATI Radeon 9250 AGP video adapter. I was eventually able to resolve the problem, though.
[ More Info ]
|
|
[ More Info ]
wpkg.js
script from the command line, but when
run that way the %SOFTWARE%
variable is not
set to point to the location where I store the software
I am going to install with WPKG. The value can be set
from the command line, however, with set SOFTWARE=\\server\share
.
When using the WPKG-client program, the variable is set by it. If you
run the wpkg.js
script manually with \\server\share\wpkg.js
,
you need to set it manually. You can create a batch file, such as wpkg.cmd
to do so.
@echo off
set SOFTWARE=\\server\share
set SETTINGS=\\server\share2
cscript wpkg.js [whatever parameter you like]
References:
The information listed there is associated with
Uninstall
registry keys that are found at
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
in the
Windows registry.
I created a batch file to query the registry to show all of the
programs that have such an Uninstall
key and that will
accept a program name and return the uninstall command found under that
key for the program.
C:\Users\JDoe\Downloads>uninstallstring AddressBook Adobe Flash Player ActiveX All ATI Software ATI Display Driver CDisplay_is1 Connection Manager DirectDrawEx DXM_Runtime Fontcore IE40 IE4Data IE5BAKEX IEData MobileOptionPack MPlayer2 PuTTY_is1 RealPopup_is1 SchedulingAgent SecondLife Total Uninstall 5_is1 Vim WIC {9D07059A-EC99-4F03-9BF2-BE40FB007822} {FB08F381-6533-4108-B7DD-039E11FBC27E} C:\Users\JDoe\Downloads>uninstallstring vim C:\Program Files\vim\vim72\uninstall.exe C:\Users\JDoe\Downloads>uninstallstring gvim ERROR: The system was unable to find the specified registry key or value. C:\Users\JDoe\Downloads>uninstallstring Adobe Flash Player ActiveX C:\Windows\system32\Macromed\Flash\uninstall_activeX.exe
The batch file is as follows:
@echo off REM uninstallstring.bat REM REM Written By: Jim Cameron REM Created: 2009-12-29 REM Last Modified: 2009-12-30 REM Version: 1.0 REM REM Usage: REM REM uninstallstring REM uninstallstring program REM REM Purpose: If no arguments are given to the batch file on the command line, REM it will display a list of all the programs with UninstallString values, REM i.e., all the registry keys under REM HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall. If REM an argument appears on the command line, it should be one of the values REM reported when no arguments are given to the script, i.e. a program name, REM such as "vim" or "Adobe Flash Player ActiveX" (don't actually put the quotes REM around the names, even if there are spaces in the name. E.g. for the latter REM case you would use the following: REM REM uninstallstring Adobe Flash Player Activex REM REM When a program name is included on the command line, uninstallstring.bat REM will determine the "UninstallString" value in the registry for that REM particular program, i.e. the location for the uninstall program for a REM particular piece of software. It will return just that value. E.g., for REM the "uninstallstring vim", it would return the following: REM REM C:\Program Files\vim\vim72\uninstall.exe REM REM If it can not find an uninstall registry value for the program listed it REM will return the following: REM REM ERROR: The system was unable to find the specified registry key or value. REM The following example shows a "reg query" command that could be issued from REM the command line to determine the value of "UninstallString" for the Vim REM editor software. The last line of output contains the "value name", REM "value type", and "value data", which is the part of the output of interest. REM C:\>reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Vim /v UninstallString REM REM HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Vim REM UninstallString REG_SZ C:\Program Files\vim\vim72\uninstall.exe REM First, display the UninstallString values present in the registry. REM Values returned by the reg query command will be in the following format: REM REM HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Vim IF "%1"=="" ( GOTO Show_All ) ELSE ( GOTO Find_String ) :Show_ALL set _All=reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall FOR /f "tokens=6* delims=\" %%A IN ('%_All%') Do echo %%B GOTO End :Find_String REM Set _Program to be the parameter entered on the command line. REM Use %* rather than %1 to cover cases where the program has spaces in the REM name. set _Program=%* REM Set the variable _UninstallString_Query to the reg query command to be issued. set _UninstallString_Query=reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%_Program%" /v UninstallString REM There are two parts at the beginning of the line, the "value name" and the REM "value type" that aren't relevant, By specifying "2*" the "value name" is REM ignored, the "value type" goes into %%A and %%B holds everything else on REM the line. FOR /f "skip=2 tokens=2*" %%A IN ('%_UninstallString_Query%') Do echo %%B :End
References:
<?xml version="1.0" encoding="UTF-8"?>
<packages>
<package
id="Sysinternals"
name="Sysinternals"
revision="1"
reboot="false"
priority="1">
<check type="file" condition="exists" path="%PROGRAMFILES%\Utilities\Sysinternals\handle.exe" />
<!-- Test first to see if the Sysinternals directory already exists.
Otherwise, if it exists and an attempt is made to create it, which
will fail, the entire installation process will fail as well.
Note: the double quotes must appear around the file name used as
a test for "if not exist", since %PROGRAMFILES% expands to a directory
path with a space in it. -->
<install cmd='cmd /c if not exist "%PROGRAMFILES%\Utilities\Sysinternals" mkdir %PROGRAMFILES%\Utilities\Sysinternals' />
<install cmd='cmd /c copy %SOFTWARE%\Utilities\Sysinternals\handle.exe "%PROGRAMFILES%\Utilities\sysinternals\."' />
<remove cmd='cmd /c rmdir /s /q "%PROGRAMFILES%\Utilities\Sysinternals"' />
<upgrade cmd='' />
</package>
</packages>
When handle.exe
is first run, it prompts for the acceptance of
the End User License Agreement (EULA). You can avoid the prompt by running
the command with the /accepteula
parameter, e.g.
handle /accepteula
. It has to be run from from any
account under which you want to use the program. It creates the registry key
HKEY_USERS\SID\Software\Sysinternals\Handle
, where
SID
is the Security Identifier for the user under which it is being run.
Within the key, it creates the value below:
Name | Type | Data |
---|---|---|
EulaAccepted | REG_DWORD | 0x00000001 (1) |
You can just use handle /accepteula
or you can use
REG ADD HKCU\Software\Sysinternals\Handle /v EulaAccepted /t REG_DWORD
/d 1 /f
under the relevant account to create the registry key.
References:
THe WPKG page for Vim, noted that the Windows installer from vim.org doesn't have a silent installer, bu the installer created by Steve Hall, which is the one I downloaded from the sourceforge.net site does have one. The author of the WPKG webpage for Vim also noted that Steve's Vim installers from 7.0.146 onwards work correctly for silent installs; however, silent uninstalls still do not work correctly.
The WPKG webpage author created the following removal batch file:
@echo off
if exist "C:\Program Files\vim\vim70\uninstall.exe" %comspec% /c start "Vim" /wait /d %WINDIR% "C:\program files\vim\vim70\uninstall.exe" /S
exit 0
His batch file presumed that Vim would be installed in
C:\program files\vim
. I wanted to specify a different
directory for the installation directory, so I created a batch file
that will check the
Windows registry for the location where Vim is installed and then
uninstall the software based on the location found for it under the
UninstallString
for Vim in the registry.
@echo off
REM The following example shows a "reg query" command that could be issued
REM from the command line to determine the value of "UninstallString" for
REM the Vim editor software. The last line of output contains the "value name",
REM "value type", and "value data", which is the part of the output of
REM interest.
REM C:\>reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Vim /v UninstallString
REM
REM HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Vim
REM UninstallString REG_SZ C:\Program Files\vim\vim72\uninstall.exe
REM Set the variable _UninstallString_Query to the reg query command to be
REM issued.
set _UninstallString_Query=reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Vim /v UninstallString
REM There are two parts at the beginning of the line, the "value name" and
REM the "value type" that aren't relevant. By specifying "2*" the "value name"
REM is ignored, the "value type" goes into %%A and %%B holds everything else
REM on the line.
FOR /f "tokens=2*" %%A IN ('%_UninstallString_Query%') Do set _Uninstall_program=%%B
%comspec% /c start "Vim" /wait /d %WINDIR% "%_uninstall_program%" /S
exit 0
The installation file, gvim-7-2-320.exe
was built with the
Nullsoft Scriptable Install
System (NSIS) as I could see by analyzing the file with
FileAlyzer and
searching for text in the binary file and also when I tried running the
file without the /S
option for a silent install. When I ran
the file without the /S
option, I saw "Nullsoft Install System
v2.45" displayed on one of the installation windows.
An installation package created with NSIS should accept a
/D=dir
parameter to allow one to specify the
installation directory, but no matter what I tried the software always
installed in the default location of C:\Program Files\vim
. I
did put the option at the end of the installation line and used a capital
"D" for the parameter, since the parameters are case sensitive. For the WPKG
install line I first tried the following:
<install cmd='%SOFTWARE%\Editors\gvim-7-2-320.exe /S' /D=%PROGRAMFILES%\Editors\vim/>
That didn't work. the WPKG webpage for NSIS stated
"It must be the last parameter used in the command line and must not contain
any quotes, even if the path contains spaces. Only absolute paths are
supported." So I tried the following variations in place of the environment
variable %PROGRAMFILES%
, but the results were always the same.
\Program Files\Editors\vim
C:\Program Files\Editors\vim
C:\Progra~1\Editors\vim
\Progra~1\Editors\vim
I.e. Vim was installed in C:\Program Files\vim
no matter what
I used. I thought that perhaps I had to use the 8.3 form for directores
with a space in them, but using Progra~1
for Program Files
did not help. It didn't matter that the directory Editors
already existed, i.e. that I wasn't expecting it to create multiple
directory levels. I finally just left it in that location.
The package file I used with WPKG for gvim, gvim.xml
contains
the following lines:
<?xml version="1.0" encoding="UTF-8"?>
<packages>
<package id="gvim" name="gvim" revision="1" reboot="false" priority="0">
<check type="uninstall" condition="exists" path="Vim 7.2.320" />
<!-- Though it uses the NSIS installer, the program won't accept
the /D=dir option that allows you to specify the installation
directory. It insists on installing itself in C:\Program Files\vim. -->
<install cmd='%SOFTWARE%\Editors\gvim-7-2-320.exe /S' />
<upgrade cmd='%SOFTWARE%\Editors\vim-remove.bat' />
<upgrade cmd='%SOFTWARE%\Editors\gvim-7-2-320.exe /S' />
<remove cmd='%SOFTWARE%\Editors\vim-remove.bat' />
</package>
</packages>
realpopup.xml
file which I placed in WPGK's
packages
directory on the server from which I install
software. The realpopup.xml
file contained the following
commands:
<?xml version="1.0" encoding="UTF-8"?>
<packages>
<package
id="RealPopup"
name="RealPopup"
revision="1"
priority="3"
reboot="false">
<check type="uninstall" condition="exists" path="RealPopup"/>
<install cmd='%SOFTWARE%\Network\Chat\RealPopup\realp26_167.exe /sp- /verysilent /Dir="%PROGRAMFILES%\Network\Chat\RealPopup"'/>
<upgrade cmd='%SOFTWARE%\Metwork\Chat\RealPopup\realp26_167.exe /sp- /verysilent /Dir="%PROGRAMFILES%\Network\Chat\RealPopup"'/>
<remove cmd='"%PROGRAMFILES%\Network\Chat\RealPopup\unins000.exe" /sp- /verysilent /norestart'/>
</package>
</packages>
%SOFTWARE%
is a variable representing the directory on
the server where software to be installed is located. I was able to specify
the directory where the software should be installed with
/Dir="%PROGRAMFILES%\Network\Chat\RealPopup"
rather than having
to accept the default installation directory, since RealPopup uses
Inno Setup, an open source
installer, to install RealPopup. I could tell beforehand
that it uses Inno Setup by analyzing it with
Filealyzer.
The developer's website no longer exists, but I found the software still works under Windows 7. The program provides a capability to chat with other users on the same LAN. It supports many useful features such as options for users and groups, an internal network browser, names auto complete, and so on. RealPopup is available in more than 12 languages.
putty.xml
file which I placed in WPGK's
packages
directory on the server from which I install software.
The putty.xml
file contained the following commands:
<?xml version="1.0" encoding="UTF-8"?>
<packages>
<package
id="PuTTY"
name="PuTTY"
revision="0600"
priority="1"
reboot="false">
<check type="uninstall" condition="exists" path="PuTTY version 0.60"/>
<install cmd='%SOFTWARE%\network\ssh\putty-0.60-installer.exe /sp- /verysilent /Dir="%PROGRAMFILES%\Network\SSH\PuTTY"'/>
<upgrade cmd='%SOFTWARE%\network\ssh\putty-0.60-installer.exe /sp- /verysilent'/>
<remove cmd='"%PROGRAMFILES%\Network\SSH\PuTTY\unins000.exe" /sp- /verysilent /norestart'/>
</package>
%SOFTWARE%
is a variable representing the directory on
the server where software to be installed is located. I was able to specify
the directory where the software should be installed with
/Dir="%PROGRAMFILES%\Network\SSH\PuTTY"
rather than having
to accept the default installation directory of %PROGRAMFILES%\PuTTY
, since PuTTY uses Inno
Setup, an open source installer, to install PuTTY. I could tell beforehand
that it uses Inno Setup by analyzing it with
Filealyzer.
[ More Info ]
monitor
command can be used to have all of the data
to and from a particular port copied to another port of your choosing
on the switch.
bash-2.03$ /usr/local/bin/elogd -c /home/elog/elogd.cfg -d /home/elog/logbooks -n localhost -D ld.so.1: /usr/local/bin/elogd: fatal: libssl.so.0.9.8: open failed: No such file or directory
I had been running the program before without a problem, so I looked for
libssl.so.0.9.8
. It was present on the system.
bash-2.03$ find / -name libssl.so.0.9.8 -print 2>/dev/null /usr/local/ssl/lib/libssl.so.0.9.8 # ls -l /usr/local/ssl/lib total 8950 drwxr-xr-x 2 bin bin 512 Jun 22 15:46 engines -r--r--r-- 1 bin bin 5396 Mar 29 2009 fips_premain.c -r--r--r-- 1 bin bin 68 Mar 29 2009 fips_premain.c.sha1 -rw-r--r-- 1 bin bin 2263212 Mar 29 2009 libcrypto.a lrwxrwxrwx 1 root other 18 Oct 16 2007 libcrypto.so -> libcrypto. so.0.9.8 -r-xr-xr-x 1 bin bin 1525564 Mar 29 2009 libcrypto.so.0.9.8 -rw-r--r-- 1 bin bin 416204 Mar 29 2009 libssl.a lrwxrwxrwx 1 root other 15 Oct 16 2007 libssl.so -> libssl.so.0.9 .8 -r-xr-xr-x 1 bin bin 313176 Mar 29 2009 libssl.so.0.9.8 drwxr-xr-x 2 bin bin 512 Jun 22 15:46 pkgconfig
So I checked to see what libraries elogd was using with the ldd
command.
bash-2.03$ ldd /usr/local/bin/elogd libsocket.so.1 => /usr/lib/libsocket.so.1 libnsl.so.1 => /usr/lib/libnsl.so.1 libssl.so.0.9.8 => (file not found) libc.so.1 => /usr/lib/libc.so.1 libdl.so.1 => /usr/lib/libdl.so.1 libmp.so.2 => /usr/lib/libmp.so.2 /usr/platform/SUNW,Ultra-5_10/lib/libc_psr.so.1
So I then logged into the root account and checked the elogd file with the ldd command from that account.
bash-2.03$ su - root Password: Sun Microsystems Inc. SunOS 5.7 Generic October 1998 # ldd /usr/local/bin/elogd libsocket.so.1 => /usr/lib/libsocket.so.1 libnsl.so.1 => /usr/lib/libnsl.so.1 libssl.so.0.9.8 => /usr/local/ssl/lib/libssl.so.0.9.8 libc.so.1 => /usr/lib/libc.so.1 libdl.so.1 => /usr/lib/libdl.so.1 libmp.so.2 => /usr/lib/libmp.so.2 libcrypto.so.0.9.8 => /usr/local/ssl/lib/libcrypto.so.0.9.8 libgcc_s.so.1 => /usr/local/lib/libgcc_s.so.1 /usr/platform/SUNW,Ultra-5_10/lib/libc_psr.so.1
From that account, I did not see "file not found" for
libssl.so.0.9.8
.
At an FAQ page on the Electrical and Computer Engineering Department website for the University of Toronto I found the following advice:
Q. When I try to run "svn" on Solaris, I get the error:
ld.so.1: svn: fatal: libssl.so.0.9.8: open failed: No such file or directory
Killed
How can I get svn to work on Solaris?A. Add /local/openssl-0.9.8a/lib to the LD_LIBRARY_PATH env var before you \start:
i.e., setenv LD_LIBRARY_PATH /local/openssl-0.9.8a/lib
I checked the LD_LIBRARY_PATH
setting for the root command.
# echo $LD_LIBRARY_PATH /usr/lib:/usr/local/lib:/usr/local/ssl/lib
I then checked the value for the variable for the user account.
bash-2.03$ echo $LD_LIBRARY_PATH bash-2.03$
On Solaris systems, you can use the -s
option to show the full
library search path.
bash-2.03$ ldd -s /usr/local/bin/elogd find object=libsocket.so.1; required by /usr/local/bin/elogd search path=/usr/lib (default) trying path=/usr/lib/libsocket.so.1 libsocket.so.1 => /usr/lib/libsocket.so.1 find object=libnsl.so.1; required by /usr/local/bin/elogd search path=/usr/lib (default) trying path=/usr/lib/libnsl.so.1 libnsl.so.1 => /usr/lib/libnsl.so.1 find object=libssl.so.0.9.8; required by /usr/local/bin/elogd search path=/usr/lib (default) trying path=/usr/lib/libssl.so.0.9.8 libssl.so.0.9.8 => (file not found) find object=libc.so.1; required by /usr/local/bin/elogd search path=/usr/lib (default) trying path=/usr/lib/libc.so.1 libc.so.1 => /usr/lib/libc.so.1 find object=libnsl.so.1; required by /usr/lib/libsocket.so.1 find object=libc.so.1; required by /usr/lib/libsocket.so.1 find object=libdl.so.1; required by /usr/lib/libnsl.so.1 search path=/usr/lib (default) trying path=/usr/lib/libdl.so.1 libdl.so.1 => /usr/lib/libdl.so.1 find object=libc.so.1; required by /usr/lib/libnsl.so.1 find object=libmp.so.2; required by /usr/lib/libnsl.so.1 search path=/usr/lib (default) trying path=/usr/lib/libmp.so.2 libmp.so.2 => /usr/lib/libmp.so.2 find object=libdl.so.1; required by /usr/lib/libc.so.1 find object=libc.so.1; required by /usr/lib/libmp.so.2 find object=/usr/platform/SUNW,Ultra-5_10/lib/libc_psr.so.1; required by /usr/lib/libc.so.1 /usr/platform/SUNW,Ultra-5_10/lib/libc_psr.so.1 bash-2.03$
So, when attempting to run elogd from the user account, the system was
only checking /usr/lib
for libssl.so.0.9.8
. Since
the file wasn't in that location, I got the "fatal: libssl.so.0.9.8: open
failed: No such file or directory" message. So, though I thought I had
been running the program from that user account, I must have always previously
been running it from the root account, since I didn't ever see the error message
before when running elogd.
So, while logged into the user account, I set LD_LIBRARY_PATH
to /usr/local/ssl/lib
. I was then able to run elogd from the user
account without an error message appearing.
bash-2.03$ LD_LIBRARY_PATH=/usr/local/ssl/lib bash-2.03$ export LD_LIBRARY_PATH bash-2.03$ /usr/local/bin/elogd -c /home/elog/elogd.cfg -d /home/elog/logbooks - n localhost -D bash-2.03$ ps -ef | grep elogd | grep -v grep jsmith 7961 1 0 14:13:05 ? 0:00 /usr/local/bin/elogd -c /home/elog/ elogd.cfg -d /home/elog/logbooks -n localhos
References:
For egg safety - to stay healthy and avoid foodborne illness — USDA advises:
- Always buy eggs from a refrigerated case. Choose eggs with clean, uncracked shells.
- Buy eggs before the "Sell-By" or "EXP" (expiration) date on the carton.
- Take eggs straight home from the grocery store and refrigerate them right away. Check to be sure your refrigerator is set at 40°F or below. Don't take eggs out of the carton to put them in the refrigerator -- the carton protects them. Keep the eggs in the coldest part of the refrigerator — not on the door.
- Raw shell eggs in the carton can stay in your refrigerator for three to five weeks from the purchase date. Although the "Sell-By" date might pass during that time, the eggs are still safe to use. (The date is not required by federal law, but some states may require it.)
- Always wash your hands with warm water and soap before and after handling raw eggs. To avoid cross-contamination, you should also wash forks, knives, spoons and all counters and other surfaces that touch the eggs with hot water and soap.
- Don't keep raw or cooked eggs out of the refrigerator more than two hours.
- Egg dishes such as deviled eggs or egg salad should be used within 3 to 4 days.
Since the recommendation from the FSIS site was not to use egg sald after 3 to 4 days, I threw away the egg salad.
It took me awhile to figure out that the problem was simply due to an image resizing option being set to "percent" rather than "pixels". I should have spotted that fairly quickly, but didn't.
[ More Info ]
I tried a couple of memory sticks, but the result was the same. She could sometimes move files from a memory stick, but then attempting to access the memory stick again would cause the Windows Explorer to stop responding.
I downloaded and installed the Realtek USB 2.0 Card Reader driver, which appears to have resolved the problem.Released: | 2009-08-28 |
Version: | 6.1.7100.30093 A |
Compatibility: | Microsoft Windows 7 (32-bit), Microsoft Windows 7 Home Premium (64-bit), Microsoft Windows 7 (64-bit), Microsoft Windows 7 Professional (64-bit), Microsoft Windows 7 Ultimate (64-bit), Microsoft Windows 7 Home Basic (32-bit), Microsoft Windows 7 Home Premium (32-bit), Microsoft Windows 7 Professional (32-bit), Microsoft Windows 7 Ultimate (32-bit), Microsoft Windows 7 Starter (32-bit), Microsoft Windows 7 Home Basic (64-bit) |
System requirements: | No additional prerequisites |
Description: | This driver enable card reader read/write functionalities. |
Enhancements: | Original Software/Drivers |
Download Site: HP
Download URL:
Realtek USB 2.0 Card Reader
[ More Info ]
[ More Info ]