Installshield: Allow installing setup only if another setup is installed - installshield

I have 2 setups: setup A, setup B.
Setup B is dependent on setup A.
Meaning, only if setup A is installed, setup B can be install, otherwise, a relevant message will pop up.
How can I create such dependency?

You could create a custom prerequisite.
Most prerequisites just look for a registry entry. If Setup A has a constant registry entry you can set that as a prerequisite.
https://helpnet.flexerasoftware.com/installshield24helplib/helplibrary/IHelpSetPrereqCustom.htm

Yes, this is possible, with the native MSI support for Launch Conditions.
https://helpnet.flexerasoftware.com/installshield19helplib/helplibrary/IHelpProdCondition.htm
All known packaging tools have this support, most of them also give you the options to extend it with custom conditions.

Related

manageprofiles.sh can't create DEPLOYMENT MANAGER

My goal is to create a Deployment Manager profile in my Websphere on Linux.
Reading tons of documentation pages gives just two methods:
1) using X GUI application WAS_root/bin/ProfileManagement/pmt.sh
In this case, according to manuals, i should choose Management option, click "Next" and choose Deployment Manager server type.
Actually when i run pmt.sh in my WAS installation there is no option to choose Deployment Manager in Management section and only one profile type that i'm able to create is AdminAgent.
2) using manageprofiles.sh script under WAS_root/bin directory.
The manuals say that i can use -serverType DEPLOYMENT_MANAGER option in order to create deployment manager profile.
Actually when i run the script:
./manageprofiles.sh -create -templatePath ../profileTemplates/management/ -ServerType DEPLOYMENT_MANAGER -isDefault -profileName dmgr -adminUserName websphere -adminPassword websphere1
I get the following message:
The following validation errors were present with the command line
arguments:
serverType: The value for this parameter must be within this set of values [ADMIN_AGENT]
That means that i don't have the ability to create Deployment Manager at all.
Please advise what steps i can perform to be able to install Deploy Manager except erase my WAS installation and install it from scratch once again.
Thanks a lot.
You have standalone aka base edition of WebSphere Application Server. To create Deployment Manager you need Network Deployment edition.
Unfortunately you will have to install it from scratch from different installation files (from ND, not base or developers edition).

Is there a current walkthrough on Web Deploy Installation and Configuration?

I've tried on a couple of different servers to install Web Deploy and it works to the extent that I need it to, but I haven't identified what the missing steps are.
Where it falls down is after installing what appears to be the requisites here:
http://www.iis.net/learn/install/installing-publishing-technologies/installing-and-configuring-web-deploy
There is only occasionally the option for "Configure for Web Deploy Publishing" in the context menu on the site. Does anyone have a guide for this for proper deployment? How to enable the option?
Deployment in these cases is not through WebPI. I have to download packages separately and install manually. Can't find something that details this with current links, screen shots or advice.
Base Windows Server 2008 server with nothing special installed. Happy to clarify anything if anyone has any ideas.
The fix (provided by Kristina Olson of Microsoft) was to uninstall Web Deploy and then make sure all the pre-requisites are in place. There is mention of this in this article:
http://www.iis.net/learn/install/installing-publishing-technologies/installing-and-configuring-web-deploy
Key points:
Make sure Web Management Service handler component in IIS is installed and enabled
Make sure PowerShell v2 is installed
Database dependencies need to be installed
Make sure to select the complete install

MS Deploy - Team Build Drop

Does MS Deploy support the following scenario?
Create a package from a Team Build drop
Install the web application into IIS6/7 including app pools, settings, etc.
It doesn't seem to want to let me configure IIS on the destination server if my package wasn't created from IIS originally.
If you pass the parameter DeployOnBuild set to true, then your build will produce not only your normal web site files under _PublishedWebSites, but also one whose name ends with _Package. That will contain your package, the parameters file and the manifest, plus a .cmd file for deploying the package.
What it will not contain is anything you didn't tell MSBUILD to place into the package. In particular, no, it won't contain IIS settings unless you told MSBUILD to place IIS settings there. It won't get the settings from out of the air - it will only get them from your local IIS, and only if that's where you have your project set up.
The current feature set does not support this scenario - Microsoft

Install Shield- Merge module dependency issues. Dll is not registering

My Issue:
I have created two merge modules. Lets call them A and B. Merge Module B is dependent on A. A installs aaa.dll to windows side-by-side. B contains bbb.dll which registers during installation and is dependent on aaa.dll. As a side note merge module A was created in Install shield 2012 and merge module B was create using the visual studio 2010 wizard.
I have an install shield project which installs both merge modules. I go into Application Data->Redistributables and add B to the installation. This automatically checks off A. If I go to Organization->Setup Design and expand the feature which contains B then click B. It brings up the window with information regarding B. In there there is a Dependencies heading which correctly lists A.
I build the project and attempt to install it on a clean VM. During the installation I get an error saying bbb.dll has failed to register would I like to ignore, cancel. At this point I looked in winsxs on the machine and notice that aaa.dll does not exist in it's proper folder. Rather it exists in a winsxs\InstallTemp\ subfolder. Then if I click ignore on the error popup, the installation continues without further errors. Then after it has completed I can manually register bbb.dll just fine, and aaa.dll exists in the proper winsxs subfolder.
My question is how can I get merge module A to completely finish and place aaa.dll in the correct location so everything will install correctly?
Things I Have Tried:
I have tried making multiple features in the Install Shield project
under Organization->Setup Design. So I created 3 features. Feature 1
at the top which just contains A. Feature 2 which contains A then B.
Finally Feature 3 which contains A again. I made all 3 features
required. I was hoping this would mean the entire feature would
finish installing and place aaa.dll in the correct side-by-side
location. However, no such luck. (I created 3 features just in case
I had the order backwards or something)
I am fairly certain that the issue is that aaa.dll is just not
installed in time or in the right place. To test this I tried installing aaa.dll first using an install shield installer that just installed merge module A. Then I ran my main installer and everything worked.
Sorry for the wall of text and any improper grammar\spelling. I will post if I figure out the issue myself just in case someone else eventually runs into this problem because it is really frustrating.
Files targeting the WinSXS and GAC aren't actually installed until commit phase execution because the API that publishes them doesn't support rollback operations. This means if you are using Self Registration on a DLL that depends on the file going to the WinSxS it won't work because you have a race condition. B.DLL will try to do a LoadLibrary() on A.DLL when calling DllRegisterServer and it won't find it.
Several work arounds:
1) Don't use Self Registration. Extract the COM data at design or build time as is the best practice.
2) Deploy A.DLL to another directory such as INSTALLDIR.
3) Wrap A.DLL up into it's own MSI and wire it up to your MSI as a setup prerequiste. This will install A in it's own transaction before starting the installation of your MSI.

Setup Project - Allow multiple installation of the same Windows Service

I have a question regarding to Setup Projects in .Net (c# language, Framework 4.0):
I made a setup project for a Windows Service, on the installation wizard, the user must input the name of the Windows Service as it would be installed. The setup program also creates a shortcut to the Uninstall program in case the user wants to remove that Windows Service.
The question is: how to let the user run the same setup program several times specifing different service name?
This behaviour could be required because the windows service is a socket consumer that connects to a server and retrieves data; to take advantage of the server capabilities the user could install the same windows service multiple times pointing to a different port on the server, to perform the data retrieving task much faster. The service is the same, the user just modify the port on the configuration file of the service, so that's why it's not logical to create a new version of the installer each time.
Any clue or suggestion would be appreciated, thanks in advance.
This can be done by using an multiple instances installation. The general approach is:
create a transform for each instance you want available to the user
use a custom EXE bootstrapper which applies a new transform to your MSI package each time a new instance is installed
The transform should change at least the PackageCode, ProductCode and UpgradeCode.
This is not supported by Visual Studio setup projects. So either you do it manually or use a commercial setup authoring tool which supports multiple instances.

Resources