views:

776

answers:

2

I've inherited an application which depends on a third-party library, which in turn depends on Visual J#.NET.

The application was previously being developed on Visual Studio 2005, and I've got it building mostly successfully on VS2008.

Amongst other components, it included a Deployment Project which built a couple of executables (plus dependencies, including this library) into an windows installer MSI.

As a result of the VJ# dependency, the Deployment Project was (apparently) using the VJSharpRedist_x86.msm merge module. This merge module appears to detect the existence of the VJ# package, and if not installed, prompt the user to download it from the web.

However no package I can find at the moment includes the merge module for VJ#. Although the project builds without error, the generated MSI fails to install. It starts, fails to detect the correctly installed VJ# on the machine, then displays a dialog box with only the text "1:" and two buttons "Yes" and "No". Clicking "Yes" opens up the url specified in the deployment project, and clicking "No" cancels the install.

(The executables which are packaged into the MSI work fine, if they are manually copied onto the machine, but the MSI refuses to install them.)

So far, I've installed:

Does anyone know where the merge module is located? Or how to correctly handle this launch condition in VS2008?

edit: clarifications.

A: 

It's probably not the answer you're wanting to hear, but VJSharpRedist_x86.msm isn't supposed to be used for redistribution:

VJSharpRedist_x86.msm must not be used to redistribute the Microsoft Visual J# Redistributable Package

The merge module for the Visual J# Redistributable Package is not a redistributable merge module. It is added to a project as a mechanism for checking dependencies and is excluded by default.

http://msdn.microsoft.com/en-us/library/8f5w2e95(VS.80).aspx

It looks as though that MSM is just a wrapper for checking that the appropriate J# runtime is preinstalled on the target machine. You may find that the Visual J# Redist you have already downloaded is sufficient.

Bevan
I had already seen that, and I'm fine with that... I know we have to manually install vjredist.exe on the target machines... The problem is that the resulting MSI is messed up due to the missing module; it doesn't check for the runtime, and it displays an dialog box with only the text "1:".
Stobor
+1  A: 

To add Visual J# .NET Redistributable Package 2.0 to the project prerequisites, copy:

C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\VJSharpRDP

to

C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages

Then you need to go into your deployment project, open the Launch Conditions Editor and remove the condition for Visual J# .NET (this is what removes the horrible blank dialog).

At this point setup.exe make sure J# is installed before your project msi launches.

normanr
+1 That sounds like exactly what I was after. That project finished a couple of weeks back, and I'll probably never need that again, but it's good to know just in case. I'll test this out at some point in the near future, and accept this if it does what I expected...
Stobor
Looks like I won't get to test this out... I'm accepting it anyway, since it seems right; if I find out differently, I'll revisit this...
Stobor