NsisIIS plug-in: Difference between revisions
(add appcmd.exe info.) |
m (→Alternatives) |
||
Line 201: | Line 201: | ||
If the NsisIIS plugin lacks a capability that you need, you can always call appcmd.exe IIS administration tool directly from an install script, like so: | If the NsisIIS plugin lacks a capability that you need, you can always call appcmd.exe IIS administration tool directly from an install script, like so: | ||
ExecWait '"$WINDIR\system32\inetsrv\appcmd.exe" < arguments > | ExecWait '"$WINDIR\system32\inetsrv\appcmd.exe" < arguments >' | ||
Documentation for appcmd is available at http://technet.microsoft.com/en-us/library/cc772200%28v=ws.10%29.aspx | Documentation for appcmd is available at http://technet.microsoft.com/en-us/library/cc772200%28v=ws.10%29.aspx | ||
[[Category:Plugins]] | [[Category:Plugins]] |
Latest revision as of 18:21, 28 March 2014
Author: Kamyar (talk, contrib) |
Links
NsisIIS.zip (16 KB)
Nsis IIS plugin page on SourceForge
Description
Version: 1.0.0
NsisIIS plugin to create/edit/delete/getinfo Microsoft IIS virtual directories and manage it's service status
Instructions:
- Copy NsisIIS.dll to Plugins folder of Nsis
- Read this readme and example files.
Functions
NsisIIS::CreateVDir
Creates an IIS virtual directory and sets its configuration, or just set the configuration if it already exists.
After calling, you MUST Pop the message, it can be the success or fail message. You can also put the settings to Nsis user variables $1 through $5. See the documentation for details.
Example: NsisIIS::CreateVDir "VDir Name" "Physical Path"
Optional arguments:
- $1 “Application Pool” name. This is necessary when working with IIS 6 or higher, in which there are different predefined pools. Your asp.net application, usually uses “Classic .NET AppPool”
- $2 “Access Flags”. This is a string describing required access permissions on IIS metabase.
r=read
w=write
s=run script
e=run executable
c=script source access
b=directory browsing
Your string must be a concatenation of these letters. for example: ‘rs’ is default for ASP.net applications.
- $3 “Default Documents” A comma separated list of default documents. Anyone used IIS know what this is.
- $4 “IPSecurity” is a special string we have provided to let the plug-in put IP/Domain access restrictions in place. The first word makes the default behavior. “Grant” means by default all clients are allowed, and the coming items (IP or Domain) are ones who are restricted. “Deny” means the contrary, e.g. all clients are denied access, except the following ones. Here are
some examples:
Grant All Except (123.123.123.0) (10.10.10.0, 255.255.255.0) (mydomain.net)
Deny All Except (123.321.123.5, 255.255.255.192) (stranger.mydomain.net)
Note that the first IP address can be a single client address or a network entry ip, in which case the next item in the parenthesis is (after comma) the net-mask parameter. Each IP or Domain must be surrounded with parenthesis, and between each item must be space.
- $5 SSL Access flags. Currently not working. This feature will be available in the next minor version.
Extra variables may be added in next versions of this project, since IIS has much more settings to be added.
NsisIIS::DeleteVDir
Deletes an IIS virtual directory by its name. After calling, you MUST Pop the message, it can be the success or fail message.
Example: NsisIIS::DeleteVDir "VDir Name"
NsisIIS::GetVDir
Gets an IIS virtual directory configuration (if exists) and put it into user variables $1 through $5. See the documentation for details. After calling, you MUST Pop the message, it can be the success or fail message.
Example: NsisIIS::GetVdir "VDir Name"
NsisIIS::ListVDirs
Gets a list of IIS Virtual Directory names, as a comma separated string.
Example: NsisIIS::ListVDirs
NsisIIS::Start
Tries to start IIS service if stopped. After calling, you MUST Pop the message, it can be the success or fail message.
Example: NsisIIS::Start
NsisIIS::Stop
Tries to stop IIS service if started. After calling, you MUST Pop the message, it can be the success or fail message.
Example: NsisIIS::Stop
NsisIIS::Pause
Tries to pause IIS service if running. After calling, you MUST Pop the message, it can be the success or fail message.
Example: NsisIIS::Pause
NsisIIS::Resume
Tries to resume IIS service after calling Pause. After calling, you MUST Pop the message, it can be the success or fail message.
Example: NsisIIS::Resume
NsisIIS::GetIIsInfo
Gets IIS Information. Currently only the version as "major.minor" string in $0.
Example: NsisIIS::GetIIsInfo
NsisIIS::ListWebSites
Tries to get a list of IIS Web Site names, as comma separated "Id:Title" items into $1. Note that in ADSI (and metabase) websites are identified by their index (id), not the name (title or comment).
Example: NsisIIS::ListWebSites
NsisIIS::CreateWebSite
Creates a website getting its Name (Title), Physical Path, and Bindings respectively. Other optional parameters can be fed into $1 through $4. Bindings are in the format of ADSI standard: hostname:ip:port. The following line creates a website at port 8000, all headers and all assigned IPs.
Example:
StrCpy $1 "Classic .NET AppPool" StrCpy $2 "rs" StrCpy $3 "MyWebPage.htm" ;Multiple documents must have a ", " separator. NsisIIS::CreateWebSite "MyWebSite" "D:\WebSite2" "*:8000:" pop $0
For default document, "default.asp, default.htm" will function properly but "default.asp default.htm" or "default.asp,default.htm" will not.
NsisIIS::CreateWebSite sets "ServerBindings" Metabase parameter in C++, which accepts string format as "IP:Port:Hostname" (Microsoft Metabase Property ref.). Latest NsisIIS code(v2.0.1) has a bug to skip 1st character if no comma(,) is found. So we must pass "*" or " " in beginning of string to make it work.
NsisIIS::DeleteWebSite
Deletes a website by getting its 1 based index (id).
Example:
NsisIIS::DeleteWebSite "2" pop $0
NsisIIS::GetWebSite
Gets a website information by getting its index (id). Result can be accessed via $0 through $5.
Example: NsisIIS::GetWebSite "2"
NsisIIS::ListAppPools
Lists all available IIS Application Pools as comma separated list of their names in $1.
Example: NsisIIS::ListAppPools
NsisIIS::CreateAppPool
Creates an Application Pool getting its name, and optionally other information through $1 to $3.
Example: NsisIIS::CreateAppPool "MyAppPool"
$1 Sets: .Net Framework Version, ex. "v2.0", "v4.0" $2 Sets: Managed Pipeline Mode to "Classic" or "Integrated" $3 Sets: Enable32BitApplications to "true" or "false"
For .Net Framework Version, word document example says "2", "4" which does not work. Source code (v2.0.1) sets managedRuntimeVersion property in C++,which must be in format of vX.Y http://technet.microsoft.com/en-us/library/cc754523(WS.10).aspx)
NsisIIS::DeleteAppPool
Deletes an Application Pool getting its ID.
Example: NsisIIS::DeleteAppPool "MyAppPool"
NsisIIS::GetAppPool
Tries to get an Application Pool information getting its name, and returning the result in variables $1 through $3.
Example: NsisIIS::GetAppPool "MyAppPool"
$1 Returns: ? $2 Returns: .Net Framework Version $3 Returns: Managed Pipeline Mode
TODO
- Adding support for Virtual Directories inside a Web Site.
- Adding support for managing another machine (not local) IIS.
- Adding support for SSL & authentication settings.
- Adding support for IIS 8
History
- 2/24/2010 Released version 1.0.0 & used in my installer.
- 7/21/2011 Released version 2.0.0 & used in my installer.
Alternatives
If the NsisIIS plugin lacks a capability that you need, you can always call appcmd.exe IIS administration tool directly from an install script, like so:
ExecWait '"$WINDIR\system32\inetsrv\appcmd.exe" < arguments >'
Documentation for appcmd is available at http://technet.microsoft.com/en-us/library/cc772200%28v=ws.10%29.aspx