locked
PublicKey / Hash attribute for .NET 3.0 Redistributable bootstrapper RRS feed

  • Question

  • Hi there,

    What I'm trying to do is create an installer for my .NET 3.0 application.  I have specified the .NET 3.0 Framework as my prerequisite.  This part is important: I have selected "Download prerequisites from the component vendor's website."

    Yes, I know all about copying the dotnetfx3.exe installers to the NETFX30 folder under "Microsoft Visual Studio 8\SDK\v2.0\Bootstrapper\Packages\NETFX30". That is not what I want to do.  I want the framework downloaded from the web.

    Now, the reason the Setup Project compiler won't let you do that is because the NETFX30\en\package.xml file does not contain a PublicKey or Hash code for the download location - meaning it cannot verify the download.  This is why it forces you to copy the installers to the NETFX30 directory and specify "Download prerequisites from the same location as my application."

    So this is my real question:

    Where can I get those PublicKeys to put in my package.xml file so that I can actually use the download feature?

    Thanks!
    Monday, October 1, 2007 10:22 PM

Answers

  • Right-click on the executable (download it from the Homesite location first), and view the Properties. Go to the Digital Signatures tab, and hit the Details button. Hit the View Certificate button in the next dialog which comes up, go to the Details Tab, and move to the Public Key. Paste the value in there into the xml file (removing all spaces).
    Thursday, October 4, 2007 8:20 PM

All replies

  • Anyone?  Not even to tell me "You need to use VS2008" or something?
    Tuesday, October 2, 2007 8:37 PM
  • Right-click on the executable (download it from the Homesite location first), and view the Properties. Go to the Digital Signatures tab, and hit the Details button. Hit the View Certificate button in the next dialog which comes up, go to the Details Tab, and move to the Public Key. Paste the value in there into the xml file (removing all spaces).
    Thursday, October 4, 2007 8:20 PM
  • Beautiful, thank you!

    The one remaining warning I get is:

    WARNING: No 'HomeSite' attribute has been provided for '.NET Framework 3.0', so the package will be published to the same location as the bootstrapper.

    but it doesn't appear to interfere with the installer.  Thanks again!


    Edit:
    Turns out that particular warning arises because this element in product.xml:

    <PackageFile Name="wfxproxy.exe" />

    has no HomeSite attribute.  Commenting it out makes the warning go away, but it appears that program is actually necessary to install the correct version of the framework (32 bit/64 bit).

    That's ok.  I can just zip that one up with my setup.exe and my installer.  I didn't want to be zipping 140MB of framework.
    Thursday, October 4, 2007 8:50 PM
  • IT appears that the installer for x64 of .net 3.0 has the same public key as the x86 version. I've opened them up separately...copies them to a file, removing the space, and run a DIFF ( WinDiff to be specific ) and the keys are identical.

    Anyone have any ideas ???? As for the wfxproxy.exe, is the solution to do the same thing for that ? Or how do we get around that problem. I do not want to have copies of that file floating around in every published package. Anyone ???


    Thursday, April 17, 2008 8:38 PM
  • I'm using VS2005 and got the same error, the solution for me was to add the following lines to my package.xml:

            <String Name="InstMsiWinFXRC">http://go.microsoft.com/fwlink/?LinkId=70848</String>
            <String Name="InstMsiWinFXRCx64">http://go.microsoft.com/fwlink/?LinkId=70849</String>

    Tuesday, December 22, 2009 9:46 AM
  • Hey snakefoot,

    where in the file did you add the lines.

            <String Name="InstMsiWinFXRC">http://go.microsoft.com/fwlink/?LinkId=70848</String>
            <String Name="InstMsiWinFXRCx64">http://go.microsoft.com/fwlink/?LinkId=70849</String>
    DP
    Tuesday, December 22, 2009 5:21 PM
  • I added those to the package.xml file in the NETFX30/En folder for my VS2005 install.

    But after experimenting a little, I decided not to point directly to the whole NET 3.0 restributable (50 Mbyte), but instead at the web installer (3 MByte). If the computer already has .NET 2.0 installed, then it will only install the necessary .NET 3.0 addon libraries.

    If wanting to include the entire redistributable in the installer, then I can recommend to download http://msdn.microsoft.com/en-us/vstudio/bb898654.aspx

    I now have the following files in my NETFX30 folder:

    • dotnetfx35setup.exe (.NET 3.5 SP1 web-installer will install .NET 2.0 SP2, .NET 3.0 SP2, .NET 3.5 SP1)
    • instmsia.exe (Taken from .NET 2.0 Package in VS2005)
    • WindowsInstaller-KB893303-v2-x86.exe (Taken from .NET 2.0 Package in VS2005)
    • Product.xml
    • EN/Package.xml
    • EN/eula.txt

    I have the following contents in the Product.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <Product ProductCode="{511DAC48-6CBB-43a3-A64D-0182F2A9EBC2}" xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper">
        <RelatedProducts>
            <IncludesProduct Code="Microsoft.Windows.Installer.2.0" />
        </RelatedProducts>
        <PackageFiles CopyAllPackageFiles="false">
            <PackageFile Name="instmsia.exe" HomeSite="InstMsiAExe" PublicKey="3082010A0282010100AA99BD39A81827F42B3D0B4C3F7C772EA7CBB5D18C0DC23A74D793B5E0A04B3F595ECE454F9A7929F149CC1A47EE55C2083E1220F855F2EE5FD3E0CA96BC30DEFE58C82732D08554E8F09110BBF32BBE19E5039B0B861DF3B0398CB8FD0B1D3C7326AC572BCA29A215908215E277A34052038B9DC270BA1FE934F6F335924E5583F8DA30B620DE5706B55A4206DE59CBF2DFA6BD154771192523D2CB6F9B1979DF6A5BF176057929FCC356CA8F440885558ACBC80F464B55CB8C96774A87E8A94106C7FF0DE968576372C36957B443CF323A30DC1BE9D543262A79FE95DB226724C92FD034E3E6FB514986B83CD0255FD6EC9E036187A96840C7F8E203E6CF050203010001"/>
            <PackageFile Name="WindowsInstaller-KB893803-v2-x86.exe" HomeSite="Msi31Exe" PublicKey="3082010A0282010100CF38F7E1A4275EF8F0CCAACEFB3ADE3B6231460546BBF5B6051AD3B3ACC29F0F4C670828C44310F53B75797F6A91F4D633C861BFFA9190007AF0791D5D6870F690B29877B5031D2F9B9D9B75892F4A01417C9E7CCB87439BF49674999E98C1CF40575816F6C0D59216E52485718F9949ED557C65C91F380023C53EAB11D6296CC69EA0705B7DD537D4677720C306CE85F84E3480A035C41C53320157EFB128BD6C01E3AD40BC80A90949DB36E337F41D49AA2AA76BD019D3CC8E9DD686467A134AD64519A553B3E2782F2E35976B4CC6E81AB0D3D1249069ABCEFC696E3E4CFB024162DC07985D7E5CA74C27316B564CE198D8E0D11D718D3D2AC07F714DFFCF0203010001"/>
            <PackageFile Name="dotnetfx35setup.exe" HomeSite="InstMsiWinFX35" PublicKey="3082010a0282010100a2db0a8dcfc2c1499bcdaa3a34ad23596bdb6cbe2122b794c8eaaebfc6d526c232118bbcda5d2cfb36561e152bae8f0ddd14a36e284c7f163f41ac8d40b146880dd98194ad9706d05744765ceaf1fc0ee27f74a333cb74e5efe361a17e03b745ffd53e12d5b0ca5e0dd07bf2b7130dfc606a2885758cb7adbc85e817b490bef516b6625ded11df3aee215b8baf8073c345e3958977609be7ad77c1378d33142f13db62c9ae1aa94f9867add420393071e08d6746e2c61cf40d5074412fe805246a216b49b092c4b239c742a56d5c184aab8fd78e833e780a47d8a4b28423c3e2f27b66b14a74bd26414b9c6114604e30c882f3d00b707cee554d77d2085576810203010001"/>
    
    <!--	If wanting setup to download a different another web-installer	
    	<PackageFile Name="dotnetfx30SP1setup.exe" HomeSite="InstMsiWinFXSP1" PublicKey="3082010a0282010100a2db0a8dcfc2c1499bcdaa3a34ad23596bdb6cbe2122b794c8eaaebfc6d526c232118bbcda5d2cfb36561e152bae8f0ddd14a36e284c7f163f41ac8d40b146880dd98194ad9706d05744765ceaf1fc0ee27f74a333cb74e5efe361a17e03b745ffd53e12d5b0ca5e0dd07bf2b7130dfc606a2885758cb7adbc85e817b490bef516b6625ded11df3aee215b8baf8073c345e3958977609be7ad77c1378d33142f13db62c9ae1aa94f9867add420393071e08d6746e2c61cf40d5074412fe805246a216b49b092c4b239c742a56d5c184aab8fd78e833e780a47d8a4b28423c3e2f27b66b14a74bd26414b9c6114604e30c882f3d00b707cee554d77d2085576810203010001"/>
    	<PackageFile Name="dotnetfx3setup.exe" HomeSite="InstMsiWinFX" PublicKey="3082010a0282010100cd819638ae5ca2f2c1dfded0ab958dd63c9d1f8bc35d862e5df0b172f5abac886ab5dab1227b0bc8c8a54b915e2213e9f9f5239db5f46e76aeefeea43cc7c4c0595c3fabb3733326a662816179a162f46e8895d06eddc79fd2a451117661ba708a65a1961689a75d81d04466e5db569e40cafcdc76242e443000e5d67d7b9511d5581da3e84f0bc988dca2d653996cca63ca996a9a925e4c4d11e82fd35b5b5e5f52a3732da5bb84450d8c191576cb08da9aa67015e84dec69fd5db26b8fed295137388bc6464915945098b0f468a4d7de097167749e778c1d856b97eae75f45cce0e6710dd16300937b31988e0bb413bdb3d0eef1df21eea96061ee37433dc30203010001"/>
    If wanting setup to download the entire redistributable
    <PackageFile Name="Dotnetfx3.exe" HomeSite="InstMsiWinFXRC" PublicKey="3082010a0282010100cd819638ae5ca2f2c1dfded0ab958dd63c9d1f8bc35d862e5df0b172f5abac886ab5dab1227b0bc8c8a54b915e2213e9f9f5239db5f46e76aeefeea43cc7c4c0595c3fabb3733326a662816179a162f46e8895d06eddc79fd2a451117661ba708a65a1961689a75d81d04466e5db569e40cafcdc76242e443000e5d67d7b9511d5581da3e84f0bc988dca2d653996cca63ca996a9a925e4c4d11e82fd35b5b5e5f52a3732da5bb84450d8c191576cb08da9aa67015e84dec69fd5db26b8fed295137388bc6464915945098b0f468a4d7de097167749e778c1d856b97eae75f45cce0e6710dd16300937b31988e0bb413bdb3d0eef1df21eea96061ee37433dc30203010001"/> <PackageFile Name="Dotnetfx3_x64.exe" HomeSite="InstMsiWinFXRCx64" PublicKey="3082010a0282010100cd819638ae5ca2f2c1dfded0ab958dd63c9d1f8bc35d862e5df0b172f5abac886ab5dab1227b0bc8c8a54b915e2213e9f9f5239db5f46e76aeefeea43cc7c4c0595c3fabb3733326a662816179a162f46e8895d06eddc79fd2a451117661ba708a65a1961689a75d81d04466e5db569e40cafcdc76242e443000e5d67d7b9511d5581da3e84f0bc988dca2d653996cca63ca996a9a925e4c4d11e82fd35b5b5e5f52a3732da5bb84450d8c191576cb08da9aa67015e84dec69fd5db26b8fed295137388bc6464915945098b0f468a4d7de097167749e778c1d856b97eae75f45cce0e6710dd16300937b31988e0bb413bdb3d0eef1df21eea96061ee37433dc30203010001"/> --> </PackageFiles> <InstallChecks> <RegistryCheck Property="WinFXInstalled" Key="HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup" Value="InstallSuccess" /> <RegistryCheck Property="WinFX64BitInstalled" Key="HKLM\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v3.0\Setup" Value="InstallSuccess" /> <RegistryCheck Property="IEVersion" Key="HKLM\Software\Microsoft\Internet Explorer" Value="Version" /> </InstallChecks> <Commands Reboot="Defer"> <Command PackageFile="instmsia.exe" Arguments= ' /q /c:"msiinst /delayrebootq"' EstimatedInstallSeconds="20" > <InstallConditions> <BypassIf Property="VersionNT" Compare="ValueExists"/> <BypassIf Property="VersionMsi" Compare="VersionGreaterThanOrEqualTo" Value="2.0"/> </InstallConditions> <ExitCodes> <ExitCode Value="0" Result="SuccessReboot"/> <ExitCode Value="1641" Result="SuccessReboot"/> <ExitCode Value="3010" Result="SuccessReboot"/> <DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" /> </ExitCodes> </Command> <Command PackageFile="WindowsInstaller-KB893803-v2-x86.exe" Arguments= '/quiet /norestart' EstimatedInstallSeconds="21" > <InstallConditions> <BypassIf Property="Version9x" Compare="ValueExists"/> <BypassIf Property="VersionNT" Compare="VersionLessThan" Value="5.0.3"/> <BypassIf Property="VersionMsi" Compare="VersionGreaterThanOrEqualTo" Value="3.0"/> <FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/> </InstallConditions> <ExitCodes> <ExitCode Value="0" Result="Success"/> <ExitCode Value="1641" Result="SuccessReboot"/> <ExitCode Value="3010" Result="SuccessReboot"/> <DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" /> </ExitCodes> </Command> <Command PackageFile="dotnetfx35setup.exe" Arguments="/q /norestart" EstimatedInstalledBytes="300000000" EstimatedInstallSeconds="300" EstimatedTempBytes="300000000"> <InstallConditions> <!-- Skip 32-bit fx pkg on a 64-bit OS --> <BypassIf Property="ProcessorArchitecture" Compare="ValueNotEqualTo" Value="Intel" /> <BypassIf Property="WinFXInstalled" Compare="ValueEqualTo" Value="1" /> <!-- Block install if user does not have admin privileges --> <FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/> <!-- Block install on Windows 95 --> <FailIf Property="Version9X" Compare="VersionLessThan" Value="4.10" String="InvalidPlatformWin9x"/> <!-- Block install on Windows XP or less --> <FailIf Property="VersionNT" Compare="VersionLessThan" Value="5.1.0" String="InvalidPlatformWinNT"/> <!-- Block install if IE 6.00 or greater is not present --> <FailIf Property="IEVersion" Compare="ValueNotExists" String="InvalidPlatformIE" /> <FailIf Property="IEVersion" Compare="VersionLessThan" Value="6.00" String="InvalidPlatformIE" /> </InstallConditions> <ExitCodes> <ExitCode Value="0" Result="Success" /> <ExitCode Value="3010" Result="SuccessReboot" /> <ExitCode Value="4097" Result="Fail" String="AdminRequired" /> <ExitCode Value="4101" Result="Fail" String="AnotherInstanceRunning" /> <ExitCode Value="4113" Result="Fail" String="BetaNDPFailure" /> <DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" /> </ExitCodes> </Command> <Command PackageFile="dotnetfx35setup.exe" Arguments="/q /norestart" EstimatedInstalledBytes="300000000" EstimatedInstallSeconds="300" EstimatedTempBytes="300000000"> <InstallConditions> <!-- Don't install the 64-bit pkg on a 32-bit OS --> <BypassIf Property="ProcessorArchitecture" Compare="ValueNotEqualTo" Value="AMD64" /> <BypassIf Property="WinFX64BitInstalled" Compare="ValueEqualTo" Value="1" /> <!-- Block install if user does not have admin privileges --> <FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/> <!-- Block install on Windows 95 --> <FailIf Property="Version9X" Compare="VersionLessThan" Value="4.10" String="InvalidPlatformWin9x"/> <!-- Block install on Windows XP or less --> <FailIf Property="VersionNT" Compare="VersionLessThan" Value="5.1.0" String="InvalidPlatformWinNT"/> <!-- Block install if IE 6.00 or greater is not present --> <FailIf Property="IEVersion" Compare="ValueNotExists" String="InvalidPlatformIE" /> <FailIf Property="IEVersion" Compare="VersionLessThan" Value="6.00" String="InvalidPlatformIE" /> </InstallConditions> <ExitCodes> <ExitCode Value="0" Result="Success" /> <ExitCode Value="3010" Result="SuccessReboot" /> <ExitCode Value="4097" Result="Fail" String="AdminRequired" /> <ExitCode Value="4101" Result="Fail" String="AnotherInstanceRunning" /> <ExitCode Value="4113" Result="Fail" String="BetaNDPFailure" /> <DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" /> </ExitCodes> </Command> </Commands> </Product>

    And I have the following contents in the Package.xml:

    <?xml version="1.0" encoding="utf-8" ?>
    
    <Package
      xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
      Name="DisplayName"
      Culture="Culture"
      LicenseAgreement="eula.txt"
    >
    
        <PackageFiles>
            <PackageFile Name="eula.txt"/>
        </PackageFiles>
    
        <!-- Defines a localizable string table for error messages-->
        <Strings>
            <String Name="DisplayName">.NET Framework 3.0</String>
            <String Name="Culture">en</String>
            <String Name="AdminRequired">Administrator permissions are required to install the .NET Framework 3.0. Contact your administrator.</String>
            <String Name="InvalidPlatformWin9x">Installation of the .NET Framework 3.0 is not supported on Windows 95. Contact your application vendor.</String>
            <String Name="InvalidPlatformWinNT">Installation of the .NET Framework 3.0 requires Windows 2000 Service Pack 3 or later. Contact your application vendor.</String>
            <String Name="InvalidPlatformIE">Installation of the .NET Framework 3.0 requires Internet Explorer 5.01 or greater. Contact your application vendor.</String>
            <String Name="InvalidPlatformArchitecture">This version of the .NET Framework 3.0 is not supported on a 64-bit operating system. Contact your application vendor.</String>
            <String Name="InstMsiWinFXRC">http://go.microsoft.com/fwlink/?LinkId=70848</String>
            <String Name="InstMsiWinFXRCx64">http://go.microsoft.com/fwlink/?LinkId=70849</String>
            <String Name="WinFXRequired">The .NET Framework 3.0 is required to install this language pack.</String>
            <String Name="AnotherInstanceRunning">Another instance of setup is already running. The running instance must complete before this setup can proceed.</String>
            <String Name="BetaNDPFailure">A beta version of the .NET Framework was detected on the computer. Uninstall any previous beta versions of .NET Framework before continuing.</String>
            <String Name="GeneralFailure">A failure occurred attempting to install the .NET Framework 3.0.</String>
            <String Name="InstMsiWinFXRC">http://go.microsoft.com/fwlink/?LinkId=70848</String>
            <String Name="InstMsiWinFXRCx64">http://go.microsoft.com/fwlink/?LinkId=70849</String>
    		<String Name="InstMsiWinFX">http://download.microsoft.com/download/4/d/a/4da3a5fa-ee6a-42b8-8bfa-ea5c4a458a7d/dotnetfx3setup.exe</String>
    		<String Name="InstMsiWinFXSP1">http://download.microsoft.com/download/4/9/0/49001df1-af88-4a4d-b10f-2d5e3a8ea5f3/dotnetfx30SP1setup.exe</String>
    		<String Name="InstMsiWinFX35">http://go.microsoft.com/fwlink/?linkid=118076</String>
        </Strings>
    
    </Package>
    
    • Edited by Rolf Kristensen Tuesday, December 22, 2009 11:21 PM Specified that it is for VS2005
    Tuesday, December 22, 2009 11:19 PM