locked
Third party installers for MSRDS RRS feed

  • Question

  • I am wondering what is the better way to find informations about the installed MSRDS versions on a computer in order to install services, media, ect.. without DssDeploy (I need a custom UI, package components selection, ...).
    I'm using WiX to generate a MSI installer and I need to find the path and if the correct MSRDS version is installed before starting the setup.
    The version could be read from VersionInformation.xml but I have to find the MSRDS root first.

    Is there a way to do that ?


    http://www.simplysim.net/
    Friday, November 20, 2009 10:46 AM

Answers

  • Our setup code InstallShield which I believe uses an MSI API to request the installation path for a particular version of an installed package. I don't know the particular API though because we don't call it directly.

    Trevor
    Tuesday, December 1, 2009 10:30 PM
  • We also tried to use WiX to generate a MSI installer.  But we found it too difficult to use and customize to our specific needs so we eventually abandoned it.  Here is how we tested for the existence of CCR and DSS assemblies in the GAC, then the presence of RDS directories.  Unfortunately however, we could not detect if RDS was installed to a non-standard directory.

        <!-- Test for CCR in GAC and save to variable: 'CCR_IN_GAC' -->
        <Property Id="CCR_IN_GAC">
          <DirectorySearch Id="CCR_GAC_Path" Path="[WindowsFolder]assembly\GAC_MSIL\Microsoft.Ccr.Core\2.0.913.0__31bf3856ad364e35" Depth="0">
            <FileSearch Id="CCR_GAC_File" Name="Microsoft.Ccr.Core.dll" />
          </DirectorySearch>
        </Property>
    
        <!-- Test for DSS in GAC and save to variable: 'DSS_IN_GAC' -->
        <Property Id="DSS_IN_GAC">
          <DirectorySearch Id="DSS_GAC_Path" Path="[WindowsFolder]assembly\GAC_MSIL\Microsoft.Dss.Base\2.0.913.0__31bf3856ad364e35" Depth="0">
            <FileSearch Id="DSS_GAC_File" Name="Microsoft.Dss.Base.dll" />
          </DirectorySearch>
        </Property>
    
        <!-- Require CCR and DSS in GAC -->
        <Condition Message="CCR and DSS not found in GAC. This setup requires a version of Microsoft Robotics Developer Studio to be installed.  Please visit: http://www.microsoft.com/robotics for more info.">
          CCR_IN_GAC AND DSS_IN_GAC
        </Condition>
    
        <!-- Pull HOMEDRIVE environment variable out of registry for use later -->
        <Property Id="HOMEDRIVE">
          <RegistrySearch Id="HomeDriveRegistrySearch" Type="raw" Root="HKCU" Key="Volatile Environment" Name="HOMEDRIVE" />
        </Property>
    
        <!-- Pull HOMEPATH environment variable out of registry for use later -->
        <Property Id="HOMEPATH">
          <RegistrySearch Id="HomePathRegistrySearch" Type="raw" Root="HKCU" Key="Volatile Environment" Name="HOMEPATH" />
        </Property>
    
        <!-- Test for RDS Standard / Academic -->
        <Property Id="STANDARD_DSSHOST">
          <DirectorySearch Id="Standard_DssHost_Path" Path="[HOMEDRIVE][HOMEPATH]\Microsoft Robotics Dev Studio 2008\bin" Depth="0">
            <FileSearch Id="Standard_DssHost_File" Name="DssHost.exe" />
          </DirectorySearch>
        </Property>
    
        <!-- Test for RDS Express -->
        <Property Id="EXPRESS_DSSHOST">
          <DirectorySearch Id="Express_DssHost_Path" Path="[HOMEDRIVE][HOMEPATH]\Microsoft Robotics Dev Studio 2008 Express\bin" Depth="0">
            <FileSearch Id="Express_DssHost_File" Name="DssHost.exe" />
          </DirectorySearch>
        </Property>
    
        <!-- Require a full install of RDS -->
        <Condition Message="This setup requires a version of Microsoft Robotics Developer Studio to be installed.  Please visit: http://www.microsoft.com/robotics for more info.">
          STANDARD_DSSHOST OR EXPRESS_DSSHOST
        </Condition>



    www.coroware.com
    Saturday, December 5, 2009 4:24 PM
  • I have made a WiX custom action in C++ that uses MSI API function "MsiGetComponentPathw" in msi.h with the correct product GUID and component GUID. To find the GUID, I have just use an MSI db reader on MSRDS msi (the msi can be found in C:\Documents and Settings\{USER}\Local Settings\Application Data\Downloaded Installations after the installer exe is executed).

    For example, the call for MSRDS 2008 R2 is :


    DWORD pathBufferLen = PATHBUFFERSIZE;
    WCHAR pathBuffer [PATHBUFFERSIZE];
    INSTALLSTATE result = MsiGetComponentPathW (L"{701A9A13-7006-483e-802F-DBBEE551A233}", L"{4FB66302-3FE1-45EF-882D-494B16E783A7}", pathBuffer, &pathBufferLen);

    For Express 2008 R2, product id is 58B45D92-BD94-49B5-9ED1-5345E2DB5576 (and same component id).
    I have no academic edition, it will be great if someone could give the product guid (you can find it in VersionInformation.xml under licences folder in MSRDS root directory) 

    Regards,
    Vincent
    http://www.simplysim.net/
    • Marked as answer by Vincent Maurin Tuesday, December 8, 2009 8:01 AM
    Tuesday, December 8, 2009 7:58 AM

All replies

  • Our setup code InstallShield which I believe uses an MSI API to request the installation path for a particular version of an installed package. I don't know the particular API though because we don't call it directly.

    Trevor
    Tuesday, December 1, 2009 10:30 PM
  • We also tried to use WiX to generate a MSI installer.  But we found it too difficult to use and customize to our specific needs so we eventually abandoned it.  Here is how we tested for the existence of CCR and DSS assemblies in the GAC, then the presence of RDS directories.  Unfortunately however, we could not detect if RDS was installed to a non-standard directory.

        <!-- Test for CCR in GAC and save to variable: 'CCR_IN_GAC' -->
        <Property Id="CCR_IN_GAC">
          <DirectorySearch Id="CCR_GAC_Path" Path="[WindowsFolder]assembly\GAC_MSIL\Microsoft.Ccr.Core\2.0.913.0__31bf3856ad364e35" Depth="0">
            <FileSearch Id="CCR_GAC_File" Name="Microsoft.Ccr.Core.dll" />
          </DirectorySearch>
        </Property>
    
        <!-- Test for DSS in GAC and save to variable: 'DSS_IN_GAC' -->
        <Property Id="DSS_IN_GAC">
          <DirectorySearch Id="DSS_GAC_Path" Path="[WindowsFolder]assembly\GAC_MSIL\Microsoft.Dss.Base\2.0.913.0__31bf3856ad364e35" Depth="0">
            <FileSearch Id="DSS_GAC_File" Name="Microsoft.Dss.Base.dll" />
          </DirectorySearch>
        </Property>
    
        <!-- Require CCR and DSS in GAC -->
        <Condition Message="CCR and DSS not found in GAC. This setup requires a version of Microsoft Robotics Developer Studio to be installed.  Please visit: http://www.microsoft.com/robotics for more info.">
          CCR_IN_GAC AND DSS_IN_GAC
        </Condition>
    
        <!-- Pull HOMEDRIVE environment variable out of registry for use later -->
        <Property Id="HOMEDRIVE">
          <RegistrySearch Id="HomeDriveRegistrySearch" Type="raw" Root="HKCU" Key="Volatile Environment" Name="HOMEDRIVE" />
        </Property>
    
        <!-- Pull HOMEPATH environment variable out of registry for use later -->
        <Property Id="HOMEPATH">
          <RegistrySearch Id="HomePathRegistrySearch" Type="raw" Root="HKCU" Key="Volatile Environment" Name="HOMEPATH" />
        </Property>
    
        <!-- Test for RDS Standard / Academic -->
        <Property Id="STANDARD_DSSHOST">
          <DirectorySearch Id="Standard_DssHost_Path" Path="[HOMEDRIVE][HOMEPATH]\Microsoft Robotics Dev Studio 2008\bin" Depth="0">
            <FileSearch Id="Standard_DssHost_File" Name="DssHost.exe" />
          </DirectorySearch>
        </Property>
    
        <!-- Test for RDS Express -->
        <Property Id="EXPRESS_DSSHOST">
          <DirectorySearch Id="Express_DssHost_Path" Path="[HOMEDRIVE][HOMEPATH]\Microsoft Robotics Dev Studio 2008 Express\bin" Depth="0">
            <FileSearch Id="Express_DssHost_File" Name="DssHost.exe" />
          </DirectorySearch>
        </Property>
    
        <!-- Require a full install of RDS -->
        <Condition Message="This setup requires a version of Microsoft Robotics Developer Studio to be installed.  Please visit: http://www.microsoft.com/robotics for more info.">
          STANDARD_DSSHOST OR EXPRESS_DSSHOST
        </Condition>



    www.coroware.com
    Saturday, December 5, 2009 4:24 PM
  • Thank you both of you :)
    I'll post my solution if I found something better

    Regards,
    Vincent
    http://www.simplysim.net/
    Monday, December 7, 2009 8:07 AM
  • I have made a WiX custom action in C++ that uses MSI API function "MsiGetComponentPathw" in msi.h with the correct product GUID and component GUID. To find the GUID, I have just use an MSI db reader on MSRDS msi (the msi can be found in C:\Documents and Settings\{USER}\Local Settings\Application Data\Downloaded Installations after the installer exe is executed).

    For example, the call for MSRDS 2008 R2 is :


    DWORD pathBufferLen = PATHBUFFERSIZE;
    WCHAR pathBuffer [PATHBUFFERSIZE];
    INSTALLSTATE result = MsiGetComponentPathW (L"{701A9A13-7006-483e-802F-DBBEE551A233}", L"{4FB66302-3FE1-45EF-882D-494B16E783A7}", pathBuffer, &pathBufferLen);

    For Express 2008 R2, product id is 58B45D92-BD94-49B5-9ED1-5345E2DB5576 (and same component id).
    I have no academic edition, it will be great if someone could give the product guid (you can find it in VersionInformation.xml under licences folder in MSRDS root directory) 

    Regards,
    Vincent
    http://www.simplysim.net/
    • Marked as answer by Vincent Maurin Tuesday, December 8, 2009 8:01 AM
    Tuesday, December 8, 2009 7:58 AM
  •  

    Hi,

    For R3 this is:

    Product ID: 01030-458-0845362-04717

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{30272467-D01A-423B-8360-9871994BA11A}\InstallLocation


    Thursday, May 27, 2010 8:35 AM