Link to home
Create AccountLog in
Avatar of Lasta
Lasta

asked on

VS 2010 Installer Project: how to deploy Enterprise Library

There is a special way to verify [via Requirements on Target Machine > Launch Conditions] if the target machine lacks a certain version of .NET Framework. What would be the way to do have Installer to check if  Enterprise Library 5.0 is already present in GAC, and install it if not found.  

I believe each individual assembly has its own GUID, complicating the detection.
ASKER CERTIFIED SOLUTION
Avatar of disrupt
disrupt
Flag of United States of America image

Link to home
membership
Create an account to see this answer
Signing up is free. No credit card required.
Create Account
Avatar of Lasta
Lasta

ASKER

These links are about adding assemblies to GAC. I need something more complex: add the entire Enterprise Library (many assemblies) as part of installation process. I see nothing similar to the special action of installing .NET Framework (that is a single action within VS 2010 Install Project). The latter refers to the Web-accessible location where .NET Framework resides.

If I am asking for something impossible to do within Visual Studio 2010: What other installation package should I employ to accomplish the task? User generated image
Avatar of Lasta

ASKER

The page with the link you have provided says: "The types of items that can be added to a deployment project include the project outputs, files, merge modules, and assemblies" -- I am talking, however, about many assemblies constituting Enterprise Library.

Employing an Installer Bootstrap could be the right solution because it can run the Library's installation .msi as a single step. But in order to check if the package is already installed I need to provide the bootstrap with its GUID, and there is no single GUID in this case.
Avatar of Lasta

ASKER

What they describe is exactly where I started. But without those assemblies being in GAC of the client machine the logged  application errors cannot be seen by the user (and Ent. Lib. installed in GAC makes it possible).
Avatar of Lasta

ASKER

Let's step out a bit. Regardless of my goal to install in GAC or not, Enterprise Library 5.0 is not installed when I use this file product.xml in the directory designated by HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\GenericBootstrapper\4.0 (in my case it's C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper):

<?xml version="1.0" encoding="utf-8"?>
<Product xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
  ProductCode="OCA 32-and-64">
  <RelatedProducts>
    <DependsOnProduct Code=".NET Framework 4.0" />
    <DependsOnProduct Code="Windows Installer 4.5" />
    <IncludesProduct Code="Enterprise Library 5.0" />
  </RelatedProducts>
  <InstallChecks>
  </InstallChecks>
  <PackageFiles>
    <PackageFile Name="Enterprise Library 5.0.msi"/>
  </PackageFiles>
  <Commands>
     <Command PackageFile="Enterprise Library 5.0.msi" Arguments="">
      <ExitCodes>
        <ExitCode Value="0" Result="Success"/>
        <ExitCode Value="1641" Result="SuccessReboot"/>
        <ExitCode Value="3010" Result="SuccessReboot"/>
        <DefaultExitCode Result="Fail" String="GeneralFailure"/>
      </ExitCodes>
    </Command>
  </Commands>
</Product>

No diagnostics is given either: the VS 2010 solution builds and shows the two prerequisites .NET Framework 4.0 and Windows Installer 4.5 check boxes checked in  Installer Properties Prerequisites. The installation .msi is created but it installs only my application, I don't see Enterprise Library installed.