msdeploy (Web deploy) installation in a container - iis

I try to containerize a third party application running on IIS and Windows server. To do that, they supply to me a powershell script which is using Web deploy 3.
My problem is I can't install it, I always have this error code :
MSI install return value for product 'Web Deploy 3.6 ... is '1603'
The version 2 is installing though, but it's the version 3 which is required. I've also tried to install it with chocolatey, but I have the exact same error.
Here the part of the Dockerfile causing troubles :
FROM microsoft/windowsservercore-insider:10.0.17093.1000
[...]
# Register dll (the web say this can solve the error)
RUN regsvr32.exe %windir%\syswow64\vbscript.dll /s
# Copy The msi installer for web deploy 3.6
COPY webdeploy.msi C:\\Temp\\webdeploy.msi
WORKDIR C:\\Temp
# Install all webdeploy features
RUN msiexec /i webdeploy.msi LicenseAccepted="0" ADDLOCAL=ALL /quiet /qn /passive /norestart
Please do note I'am using the insider version because I need the MSMQ feature which is not released yet (It's a proof of concept).
Is there any requirement needed by webdeploy that I don't know and which is missing in the container version ?

It seems there is a bug in the preview build (as mentioned by #Gregory Suvalian). Using the last one (17623) seems to correct the problem.

Related

How to install Node JS in Docker with a Windows Container dotnet/aspnet:6.0?

Seems like something that should be fairly simple, but since windows containers are using nano and don't have msiexec.exe to install packages with I'm not finding a well established alternative after googling for several hours now. So, how would one best do the below in a nano based windows container?
RUN msiexec.exe /i https://nodejs.org/dist/v18.7.0/node-v18.7.0-x64.msi /quiet
What I'm using:
Windows Docker Containers
dockerfile VS makes, which has a base of dotnet/aspnet:6.0 and uses dotnet/sdk:6.0 in the build stage
Base stage of dockerfile where I want to do my install of node at:
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
# install node for npm usage
RUN msiexec.exe /i https://nodejs.org/dist/v18.7.0/node-v18.7.0-x64.msi /quiet
For what it's worth, I'm use to Linux based containers and this is the first time I've tried out using Windows ones. Please correct me on anything I may have misspoken on or misrepresented.
Welcome to the Windows world! :)
On Windows, .Net has two flavors: .Net and .Net Framework. The former (.Net) was previously called .Net Core and since its renaming to .Net it has caused some confusion.
To clarify:
.Net Framework is the legacy framework on which .Net was only available in Windows.
.Net (formerly called .Net Core) is available on Windows and Linux. At first, .Net on Windows was only available on Nano Server base container images. However, recently the team made it available on the Server Core image, which supports a wider range of pre-requisites, such as MSIEXEC.
My suggestion to you is to look at the list of available tags for the image you want to use here: https://mcr.microsoft.com/en-us/product/dotnet/aspnet/tags
Also, look at the documentation of Windows containers. There's a particularity of Windows containers which is a version match requirement between container host and container. More details here: https://learn.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-2022%2Cwindows-11-21H2

How to install IIS in Windows EC2 using AWS CodeDeploy?

I need to deploy a .NET project on an EC2 instance running Windows, and in order for the code to run I need to make sure the instance has IIS installed.
This also needs to be automated (hence the need for CodeDeploy).
How can I install IIS and MS-SQL using CodeDeploy?
I'm a bit familiar with CodeBuild but I don't think it will particularly help me here. I'm using CodeBuild to build/compile the .NET application and put the output in S3. Now I need the next step which is taking that code and putting it on an EC2 running IIS and MS-SQL.
I would recommend to install IIS/MS-Sql from within UserData of the EC2 instance or use a Pre-baked (Golden) Image approach. Installing software via CodeDeploy is not recommended as such feature installation may take long time in Windows environment and is error prone.
An example UserData to install IIS on Windows is as follows:
<powershell>
Import-Module ServerManager
tzutil /s "AUS Eastern Standard Time"
Add-WindowsFeature Web-WebServer -includeAllSubFeature -logpath $env:temp\\Web-WebServer_feature.log
Add-WindowsFeature Web-Mgmt-Tools -includeAllSubFeature -logpath $env:temp\\Web-Mgmt-Tools_feature.log
</powershell>
Use CodeDeploy to Deploy your application artifacts and restart any service(s) if required. Deployment instructions for CodeDeploy are stored in appspec.yml file in the root of your source package. The syntax for a Windows version to deploy to IIS is detailed here [1].
References:
[1] https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorials-windows-configure-content.html#tutorials-windows-configure-content-add-appspec-file

Web Platform Installer: Python Installer - Downloaded file failed signature verification and may have been tampered with

I'm trying to install WFastCGI 2.1 Gateway for IIS and Python 3.4 via the Web Platform Installer in Microsoft Server Manager's IIS Manager.
Python Installer fails with the error: "This product did not install successfully: Downloaded file failed signature verification and may have been tampered with". Python 3.4.2 (32-bit) and WFastCGI 2.1 Gateway for IIS and Python 3.4 subsequently fail with the error: "This product cannot be installed because a product that it depends on did not install successfully".
I noticed that the direct download link in the prerequisites tab launches this URL, which explains that pytools has been migrated to PTVS. Maybe this is part of the problem?
I'm following this tutorial about deploying a Flask web app on IIS. Please help me find solutions to make this installation successful or provide alternatives that will allow me to deploy on IIS. Thank you!
I had the exact same issue, and as mgrollins mentioned on his comment, using wfastcgi directly is the solution.
In my case I followed a very similar tutorial (here) up to where you finish installing IIS, then instead of installing the Web Platform Installer, I downloaded Python from python.org, installed it (for all users and adding to PATH), performed the "Downloading Package" and "Enabling wfastcgi" steps from the wfastcgi project page, https://pypi.org/project/wfastcgi/, meaning:
pip install wfastcgi
wfastcgi-enable
After that you can continue following the tutorial from where it says "Setup your site - copy the wfastcgi.py " . (I found the wfastcgi.py file on the Scripts folder of the Python Install directory)
Another item worth mentioning, during “Add Module Mapping” there should be a | between the Python.exe and your site directory, if you miss it the side won't load, so for example it should look like:
C:\Program Files\Python36\python.exe|C:\inetpub\wwwroot\mysite\wfastcgi.py

TFS 2017 CI with Gulp

I have just set up a TFS 2017 server and am trying to go through the CI tutorial at https://learn.microsoft.com/en-us/vsts/build-release/apps/nodejs/build-gulp?tabs=vsts but am having trouble on the Gulp task. I am getting the error "Not found node: null". I am using an ubuntu agent with the most recent versions of node, npm, and gulp installed. All the tasks are configured exactly as described in the tutorial.
The error usually means you have an environment issue , such as node couldn't captured by TFS build agent.
For the Default agent queue:
VSTS: Select Hosted VS2017. This is how you can use our pool of agents that have the software you need to build your app.
TFS: Select a queue that includes a Windows build agent.
Source Link
If you are working with linux build agent, you need to use windows build agent instead of ubuntu(linux build) agent.
If you are working with windows agent, make sure the node, npm, and gulp installed before TFS build agent configured, otherwise the new capability will not captured.
You need to reconfigure the build agent or restart VSO agent service. Besides make sure your working directory of Gulp task is getting set properly.
I ended up uninstalling and reinstalling nodejs and npm. I believe the problem was that TFS did not sense the node.js and npm capabilities because I originally installed them using nvm, so the second time around I installed using apt packages and everything worked fine.

Installshield installation ask the user to have iisadmin on a machine with iis7 installed

I am creating an installation that is adding a web site to IIS. But when I am trying to run the installation on a machine with IIS 7 installed and IIS 6 compatibility mode not installed, it fails the installation with:
Error 1920.Service IISADMIN (IISADMIN) failed to start. Verify that
you have sufficient privileges to start system services
If I install the compatibility feature it fixes the problem and the installation succeeds.
I want to know if there is a way to not install this feature on IIS 7.
Or if it must be installed - how can I install it automatically?
btw, I have installShield 2011 Professional.
Eventually what I did is to run as custom actions this lines
dism /online /enable-feature /featurename:IIS-IIS6ManagementCompatibility
dism /online /enable-feature /featurename:IIS-Metabase
and use as condition Not Installed and IIS_VERSION > "#6"
Thanks for Cosmin Privu help
Ben
You can try adding the compatibility fix as a custom prerequisite to your package:
http://kb.flexerasoftware.com/doc/Helpnet/installshield12helplib/SetupPrereqEditor.htm
For example you can create a custom EXE which uses pkmgr.exe to install the IIS-IIS6ManagementCompatibility feature (it's like installing it from Control Panel).
It can be configured to install only when it's not found and only if IIS 7 is installed. This way you can make sure that the service can always be started for IIS 7.

Resources