Difference between revisions of "Installation instructions"

From WPKG | Open Source Software Deployment and Distribution
Jump to: navigation, search
(Starting wpkg using srvany to create a system service (advanced))
m
Line 24: Line 24:
 
Additionally, create a small batch script called <code>wpkg-start.bat</code> and put it on your server:
 
Additionally, create a small batch script called <code>wpkg-start.bat</code> and put it on your server:
  
  <code>cscript \\server\wpkg\wpkg.js /synchronize /quiet</code>
+
  <code>cscript \\server\wpkg\wpkg.js /synchronize /quiet /nonotify</code>
 +
 
 +
Then [[WPKG_with_Active_Directory | configure your Active Directory]] to run this script on a workstation when it is booted.
  
Then configure your Active Directory to run this script on a workstation when it is booted.
 
Configuring Active Directory to run WPKG is described in more details in WPKG Wiki.
 
  
 
= Client side =
 
= Client side =
Line 46: Line 46:
  
 
See the [[download]] for link to download WSH.  See [[Windows Scripting Host]] for an automated method to install WSH using a batch file.
 
See the [[download]] for link to download WSH.  See [[Windows Scripting Host]] for an automated method to install WSH using a batch file.
 
== Starting wpkg Using Windows Task Scheduler ==
 
 
* create a small batch script called wpkg-start.bat and put it on your server:
 
 
<code>cscript \\server\wpkg\wpkg.js /synchronize /quiet</code>
 
 
* open Scheduled Tasks from Start Menu -> Accessories -> System Tools
 
* double-click "Add Scheduled Task" and choose "Next"
 
* click on Browse and locate the wpkg-start.bat file you just created
 
* choose "When my computer starts" and click Next
 
* type-in the Username and password (this user needs to have administrative rights)
 
* choose Next -> Finish
 
 
You will have see a scheduled job file, which you can copy to all other machines on the network (but you will have to renew credentials, as they are not stored in this file).
 
 
Alternatively, you may add a scheduled task from a command line (or during an Unattended install):
 
 
<code>schtasks /create /tn wpkg /tr "\\server\wpkg\wpkg-start.bat" /sc onstart /ru domain\administrator /rp password</code>
 
 
schtasks utility will work from the command line only in Windows XP or higher. If you have Windows 2000, and would like to install WPKG "silently", please see this page: [http://www.windowsitpro.com/Article/ArticleID/25186/25186.html?Ad=1 http://www.windowsitpro.com/Article/ArticleID/25186/25186.html?Ad=1]
 
 
Note that system commands in Windows are '''*incompatibile*''' in different language versions of Windows! I'm not joking now!
 
 
For example, in German version of Windows, this command would look like that (note the <code>/sc</code> switch):
 
 
<code>schtasks /create /tn wpkg /tr "\\server\wpkg\wpkg-start.bat" /sc beimstart /ru domain\administrator /rp password</code>
 
 
If you're not sure, consult schtasks help:
 
 
<code>schtasks /?</code>
 
 
 
 
== Starting wpkg using Active Directory client ==
 
 
Basically, you don't have to configure anything on the client, because everything was configured on the Active Directory server (see above - Server side).
 
 
One thing you might need, is cscript binary - it is not shipped with Windows 2000, so you may have to add it to your clients (see above).
 
 
See also [[WPKG_with_Active_Directory|WPKG with Active Directory]] for a description with screenshots.
 
 
== Starting wpkg using cygrunsrv.exe ==
 
 
An easy way to start WPKG as a service is to use cygrunsrv.exe from [http://www.cygwin.com Cygwin].<br>
 
You don't need to install Cygwin, it's enough if you copy cygrunsrv.exe binary and cygwin1.dll library.<br>
 
 
With cygrunsrv, it's easy to start WPKG as any user you want (SYSTEM, local administrator, domain administrator etc.)
 
 
For cygrunsrv usage, see <code>cygrunsrv --help</code>.
 
 
You can get cygwin1.dll from any Cygwin mirror, it's located in cygwin/release/cygwin (for example, cygwin-1.5.19-4.tar.bz2).<br>
 
cygrunsrv is located in cygwin/release/cygrunsrv (for example, cygrunsrv-1.16-1.tar.bz2).
 
 
Here's one working example:
 
 
<pre>
 
cygrunsrv -I wpkg -p '/cygdrive/c/WINDOWS/system32/cscript.exe' -a'c:\wpkg\wpkg\wpkg.js /quiet /synchronize' -c '/home/Administrator/wpkg/wpkg'
 
cygrunsrv -S wpkg
 
</pre>
 
 
Those arguments are:
 
 
; -I [name] : Install a service named [name].  In this example, we're calling it wpkg.
 
; -p [/path/to/executable] : Path to the command to run -- in this case, cscript.
 
; -a [arguments to executable] : Arguments for the executable -- in this case, the path to wpkg.js and how we want it to run.
 
; -c [directory] : Go to this directory before starting the program.
 
; -S [name] : Start the service.
 
 
There are a few things to note:
 
 
* The <code>-p</code> argument gives the path to cscript in the format Cygwin uses to get to Windows drives.  In this format, the C: drive can be reached at  <code>/cygdrive/c</code>, the D: drive can be reached at <code>/cygdrive/d</code>, and so on.  Also, unlike Windows, Cygwin is case-sensitive -- so <code>/cygdrive/c/Windows</code> is ''not'' the same as <code>cygdrive/c/WINDOWS</code>.
 
* The <code>-a</code> argument is given in Windows format.  Also, it is ''very'' specific to the (stupid) way I have wpkg set up on this machine.
 
* I'm unsure if the <code>-c</code> argument is necessary, but it works for me.  It's given in Cygwin/Unix format, and is again very specific to the stupid way I have things set up.  I'm unsure what to put here if all you're doing is copying around the Cygwin DLL.
 
* Cygwin saves the STDERR output to <code>/var/log/wpkg.log</code> (assuming you named the service wpkg).  Again, I'm not sure where this would go if you're just copying around the Cygwin DLL.
 
 
== Starting wpkg using srvany to create a system service (advanced) ==
 
 
All you have to do is to login to your Windows box, and issue these commands as Administrator - you can put them in one file which we call <code>wpkg-install.bat</code>:
 
 
Here is a sample wpkg-install.bat file - the sum of steps 1-8 described below. You may want to change some paths of course.
 
 
  <code>SET SRVPATH=\\server\wpkg\files\
 
  copy %SRVPATH%\srvany.exe %SystemRoot%\System32
 
  copy %SRVPATH%\instsrv.exe %SystemRoot%\System32
 
  instsrv "Windows Packager" "%SystemRoot%\System32\srvany.exe"
 
  %SRVPATH%\scripten.exe /Q /R:N
 
  cscript.exe %SRVPATH%\install-service.js
 
  net start "Windows Packager"</code>
 
 
 
We are using the <code>srvany.exe</code> and <code>instsrv.exe</code> programs included with the Windows 2000 Resource Kit to install the [[wpkg.js]] script with the <code>/synchronize /quiet</code> options as a system service.
 
<code>srvany.exe</code> and <code>instsrv.exe</code> programs cannot be distributed along with this software - licensing and all. However, you can find links in the [[download]] section.
 
 
It is quite easy to implement this yourself (for impatient - all commands shown are available as copy/paste text and as downloads later below):
 
 
* Get <code>srvany.exe</code> and <code>instsrv.exe</code> files and put them on your file server.
 
 
* Pick a network drive. This drive must be accessable by the user WPKG is going to be configured to run as. We are using LocalSystem on Windows 2000. Windows XP has a new NetworkService account which begs examination. When LocalSystem attempts to access a file share, it does so under the identity of guest. Thus, guest must have read only access to your entire software share.
 
 
* Our first command copies <code>srvany.exe</code> and <code>instsrv.exe</code> to <code>%SystemRoot%\System32</code>:
 
 
<code>copy \\server\wpkg\files\srvany.exe %SystemRoot%\System32
 
copy \\server\wpkg\files\instsrv.exe %SystemRoot%\System32</code>
 
 
* Then we run:
 
 
<code>instsrv "Windows Packager" "%SystemRoot%\System32\srvany.exe"</code>
 
 
This creates the Windows service called "Windows Packager". It is however not yet started.
 
 
* Next, we install the latest version of Windows Script Host on the system. Windows 2000 out of the box does not have a good enough version. Check Microsoft's web site for the Windows script software. The executable is named <code>scripten.exe</code> ("Windows Script 5.6 for Windows 2000 and XP") . We launch it from the <code>wpkg-install.bat</code> file as follows:
 
 
<code>\\server\wpkg\files\scripten.exe /Q /R:N</code>
 
 
This makes it install quietly and not reboot.
 
 
* Next in our <code>wpkg-install.bat</code> file, setup the registry entries neccassary for <code>srvany.exe</code> to properly start Windows Packager. It can be done by calling out to a JScript file: <code>install-service.js</code>. This is done because the registry keys needed had the potential to be different for each system. Creating keys using code was ideal. The <code>install-service.js</code> file sets the following keys:
 
 
<code>HKLM\System\CurrentControlSet\Services\Windows Packager\Parameters\Application
 
HKLM\System\CurrentControlSet\Services\Windows Packager\Parameters\AppParameters</code>
 
 
The Application key specifies the full path to the executable that the service will run at boot. This is because we do not launch the [[wpkg.js]] file, we launch the Windows Scripting Host (<code>cscript.exe</code>) and instruct it to launch the [[wpkg.js]] file. Set the Parameters key to:
 
 
<code>\\server\wpkg\wpkg.js /synchronize /quiet</code>
 
 
This instructs <code>cscript.exe</code> to run the [[wpkg.js]] script, which is placed on the network share, with the two options shown. It will synchronize the system on boot, logging errors quietly.
 
 
* The last entry in the wpkg-install.bat file starts "Windows Packager" service:
 
 
<code>net start "Windows Packager"</code>
 
 
 
To sum up, we have two files needed to install WPKG on a given Windows machine: <code>wpkg-install.bat</code>, which copies all needed files, and <code>install-service.js</code> (started within <code>wpkg-install.bat</code>), which installs WPKG as a service in Windows registry - so that it could be launched each time the machine is booted. <code>wpkg-install.bat</code> needs to be run only once.
 
  
  
This is an example <code>install-service.js</code> file:
+
== Starting WPKG using WPKG Installer ==
  
var WshShell = WScript.CreateObject("WScript.Shell");
+
In August 2006 we have written a client side WPKG installer. It is distributed as a MSI package, and it can work in two modes:
var srvKey = "HKLM\\SYSTEM\\CurrentControlSet\\Services\\Windows Packager\\Parameters\\";
+
var appKey = srvKey + "Application";
+
var parKey = srvKey + "AppParameters";
+
var srvPath = WshShell.ExpandEnvironmentStrings("%SystemRoot%") + "\\System32\\cscript.exe"
+
var srvArgs = "\\\\server\\wpkg\\wpkg.js /synchronize /quiet";
+
WshShell.RegWrite(appKey, srvPath, "REG_SZ");
+
WshShell.RegWrite(parKey, srvArgs, "REG_SZ");
+
  
 +
* GUI - where you can point and click every aspect of your WPKG installation on a given workstation,
 +
* CLI - command line - recommended for advanced users and for scripted installations; here parameters have to be given in the command line.
  
Running the <code>wpkg-install.bat</code> file on a new system will now set up and run WPKG! Running this <code>wpkg-install.bat</code> file as part of your Windows install answer file is ideal.
+
You can download WPKG Installer on the [[Download | download page]], usage instructions are in the package.
  
Watch Windows reboot. Imagine you have over 20 packages being installed, half of which require a reboot. It's amusing to see Windows reboot itself for 30 minutes installing stuff.
 
  
 +
==[[Installation instructions - advanced | Other, advanced and custom installation methods]] ==
  
 
[[Category:Installation]]
 
[[Category:Installation]]

Revision as of 19:37, 15 August 2006

Server side

Configuration on the server side is pretty straightforward. If you run Samba, add something like this to your smb.conf file:

[wpkg]
 comment = Windows Packager
 path = /home/samba/wpkg
 read only = yes
 browseable = no
 valid users = guest, nobody
 guest ok = Yes

You also have to copy hosts.xml (host definition file), packages.xml (packages definition file), profiles.xml (profiles definition file) and wpkg.js files to the above defined path = /home/samba/wpkg directory. You have to edit the configuration files: hosts.xml, packages.xml and profiles.xml to suit your needs. You don't have to edit wpkg.js, which is WPKG engine.

Optionally - depending on your client setup (below) - you will also have to copy three .exe files - srvany.exe, instsrv.exe and scripten.exe, if you don't have them on your clients. To simplify, first copy them to your server - for example to /home/samba/wpkg/files - and from there distribute them to your clients. This is described in a "Client side" below.

If you don't run Samba, but a Windows server with Active Directory instead - your server setup should be similar (creating a share etc.).

Additionally, create a small batch script called wpkg-start.bat and put it on your server:

cscript \\server\wpkg\wpkg.js /synchronize /quiet /nonotify

Then configure your Active Directory to run this script on a workstation when it is booted.


Client side

Client side installation is also pretty easy.

Basically, you need to run wpkg.js script when the workstation boots up, like below:

cscript \\server\wpkg\wpkg.js /synchronize /quiet

It can be done in many ways. The most proper way to do it will depend on your setup, you have to decide which one to choose.

Requirements: Windows Scripting Host

wpkg requires Windows Scripting Host (WSH; also known as cscript.exe) which is shipped by default on Windows XP and higher only. The WSH shipped with Windows 2000 is too old and must be upgraded; if you've installed Internet Explorer 6 on Windows 2000, that should have upgraded WSH for you. Older versions of Windows probably don't have any WSH.

Do not confuse the two, different WSH installers: one for Windows 98, ME, and NT and another installer for 2000 and XP.

See the download for link to download WSH. See Windows Scripting Host for an automated method to install WSH using a batch file.


Starting WPKG using WPKG Installer

In August 2006 we have written a client side WPKG installer. It is distributed as a MSI package, and it can work in two modes:

  • GUI - where you can point and click every aspect of your WPKG installation on a given workstation,
  • CLI - command line - recommended for advanced users and for scripted installations; here parameters have to be given in the command line.

You can download WPKG Installer on the download page, usage instructions are in the package.


Other, advanced and custom installation methods