Andrew,

I had a simmilar requirement for a project last year. There are plenty
of versions of mmc.exe, but after checking what ships with the builds in
KB907265 and whats included in 2K3 R2 - I found that you have MMC3 if
mmc.exe has a version > 5.2.3790.2611

We also had a requirement to installed MMC3 if it was not already
installed, I've tried to include the relevant fragments below:

Essentally we used FileSearches to set some properties if MMC3 is
installed, and also if mmcperf.exe exists (and then run it)

    <Property Id="MMC30INSTALLED">
      <DirectorySearch Id="SystemFolderPath" Path="[SystemFolder]">
        <FileSearch Name="mmc.exe" MinVersion="5.2.3790.2611" />
      </DirectorySearch>
    </Property>
    <Property Id="MMCPERF">
      <DirectorySearch Id="SystemFolderPath2" Path="[SystemFolder]">
        <FileSearch Name="mmcperf.exe" />
      </DirectorySearch>
    </Property>

We also included the Microsoft KB packages to install MMC3 on XP and 2K3
(if not already present) in our installer (this was a customer request).
So we had some custom actions to invoke the correct installer if MMC3
was'nt already installed.

  <!-- Custom Actions to install MMC 3.0 for Windows XP SP2 -->
    <CustomAction Id="wxp.kb907265.setproperty"
Property="wxp.kb907265.install"
Value='"[TempFolder]\WindowsXP-KB907265-x86-ENU.exe" /quiet /norestart
/log:"[TempFolder]\WindowsXP-KB907265-x86-ENU.log"' />
    <CustomAction Id="wxp.kb907265.install" BinaryKey="WixCA"
DllEntry="CAQuietExec" Execute="deferred" Return="check" />

    <!-- Custom Actions to install MMC 3.0 for Windows 2003 -->
    <CustomAction Id="wk3.kb907265.setproperty"
Property="wk3.kb907265.install"
Value='"[TempFolder]\WindowsServer2003-KB907265-x86-ENU.exe" /quiet
/norestart /log:"[TempFolder]\WindowsServer2003-KB907265-x86-ENU.log"'
/>
    <CustomAction Id="wk3.kb907265.install" BinaryKey="WixCA"
DllEntry="CAQuietExec" Execute="deferred" Return="check" />

We also found that we needed to run MMCPERF after installing MMC3, or if
it had not yet been run on 2K3 R2

<!-- Run MMCPERF to ensure the MMC 3.0 .Net assemblies are in the GAC
and nGen'd . -->
    <CustomAction Id="mmcperf.install.SetProperty"
Property="mmcperf.install" Value='"[SystemFolder]\mmcperf.exe"' />
    <CustomAction Id="mmcperf.install" BinaryKey="WixCA"
DllEntry="CAQuietExec" Execute="commit" Return="check" />

Then we scheduled the actions accordingly...

<InstallExecuteSequence>
      <!-- Install MMC3 on Windows XP if required -->
      <Custom Action="wxp.kb907265.setproperty"
After="InstallFiles"><![CDATA[(MMC30INSTALLED="") AND (VersionNT=501)
AND (NOT Installed)]]></Custom>
      <Custom Action="wxp.kb907265.install"
After="wxp.kb907265.setproperty"><![CDATA[(MMC30INSTALLED="") AND
(VersionNT=501) AND (NOT Installed)]]></Custom>

      <!-- Install MMC3 on Windows 2003 if required -->
      <Custom Action="wk3.kb907265.setproperty"
After="InstallFiles"><![CDATA[(MMC30INSTALLED="") AND (VersionNT=502)
AND (NOT Installed)]]></Custom>
      <Custom Action="wk3.kb907265.install"
After="wk3.kb907265.setproperty"><![CDATA[(MMC30INSTALLED="") AND
(VersionNT=502) AND (NOT Installed)]]></Custom>

      <!-- Only run 'mmcperf' if it is found in [SystemFolder] -->
      <Custom Action="mmcperf.install.SetProperty"
After="WriteRegistryValues"><![CDATA[((MMCPERF<>"") OR
(MMC30INSTALLED="")) AND (NOT Installed)]]></Custom>
      <Custom Action="mmcperf.install"
After="mmcperf.install.SetProperty"><![CDATA[((MMCPERF<>"") OR
(MMC30INSTALLED="")) AND (NOT Installed)]]></Custom>


We also had to ensure our installer placed the KB packages into the TEMP
folder if we found we need to install them

<Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="TempFolder">
        <!--
=====================================================================
-->
        <!--   MMC 3.0 Update for XP and 2003 (Not required for
R2/Vista/2008.     -->
        <!--   These files are copied and installed from Temp if needed
-->
        <!--
=====================================================================
-->
        <Component Id="wxp.mmc.Component"
Guid="c5546e33-4a89-4398-bec8-ebfd679ab790" Transitive="yes">
          <Condition><![CDATA[(MMC30INSTALLED="") AND (VersionNT=501)
AND (NOT Installed)]]></Condition>
          <File Id="wxp.mmc.File" Name="WindowsXP-KB907265-x86-ENU.exe"
Source="res\WindowsXP-KB907265-x86-ENU.exe" />
        </Component>
        <Component Id="w3k.mmc.Component"
Guid="c5546e33-4a89-4398-bec8-ebfd679ac792" Transitive="yes">
          <Condition><![CDATA[(MMC30INSTALLED="") AND (VersionNT=502)
AND (NOT Installed)]]></Condition>
          <File Id="w3k.mmc.File"
Name="WindowsServer2003-KB907265-x86-ENU.exe"
Source="res\WindowsServer2003-KB907265-x86-ENU.exe" />
        </Component>
      </Directory>
</Directory>

<Feature Id="...." Title="..." Level="...">
        ...
      <ComponentRef Id="wxp.mmc.Component" />
      <ComponentRef Id="w3k.mmc.Component" />
</Feature>

Hope this helps!

Ian

-----Original Message-----
From: Andrew Lee [mailto:a...@solarflare.com] 
Sent: 08 January 2009 17:34
To: wix-users@lists.sourceforge.net
Subject: [WiX-users] MMC 3 as an installation prerequisite

I'm using WiX to write an installer for an application which includes a
MMC 3.0 snapin.  Does anyone know how to detect from within an installer
if MMC 3 is installed on the system?  I haven't found any obvious MMC
3.0 specific registry entires and the MMC executable itself has a myriad
of different version numbers depending on OS and service pack.

I recognise that this isn't strictly a WiX question but any insight will
be gratefully received.

Best regards,


Andrew

-- 
Andrew Lee                  Solarflare Communications
mailto:a...@solarflare.com  Block 2, Second floor, Westbrook Centre
tel:+44-1223-518040 x5507   Milton Road, Cambridge, CB4 1YG, UK
fax:+44-1223-464225         http://www.solarflare.com/


------------------------------------------------------------------------
------
Check out the new SourceForge.net Marketplace.
It is the best place to buy or sell services for just about anything
Open Source.
http://p.sf.net/sfu/Xq1LFB
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

------------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It is the best place to buy or sell services for
just about anything Open Source.
http://p.sf.net/sfu/Xq1LFB
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to