Как мне сделать установщик WiX 3.5 с полностью автономным установщиком .NET 4.0? - PullRequest
7 голосов
/ 10 июня 2010

Продолжая предыдущий вопрос Я задал здесь , теперь мне нужно перейти к vs2010.

Я получил самую последнюю еженедельную сборку WiX 3.5, версия от 5 июня 2010 года.

Вот соответствующие строки из моего установщика:

      <ItemGroup>
        <BootstrapperFile Include="Microsoft.Net.Framework.4.0">
          <ProductName>.NET Framework 4.0</ProductName>
        </BootstrapperFile>
        <BootstrapperFile Include="Microsoft.Windows.Installer.4.5">
         <ProductName>Windows Installer 4.5</ProductName>
       </BootstrapperFile>
      </ItemGroup>

и

<GenerateBootstrapper ApplicationFile="MySetup.msi" ApplicationName="MyProgram" BootstrapperItems="@(BootstrapperFile)" Path="C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\" ComponentsLocation="Relative" OutputPath="$(OutputPath)" Culture="en" />

Однако, это просто не работает. В vs2010 рядом с файлами .NET Framework 4.0 и Windows Installer 4.5 есть восклицательные знаки, а на странице свойств они перечислены как «Неизвестный BuildAction BootstrapperFile», а сборка просто не устанавливает .NET 4.0 вообще. Соответствующее предупреждение:

C:\source\depot\project\vs2010\WiXSetup\WiXSetup.wixproj(68,5): warning MSB3155: Item 'Microsoft.Net.Framework.4.0' could not be located in 'C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\'.

1 Ответ

12 голосов
/ 10 июня 2010

Краткий ответ - изменить

<ItemGroup>
    <BootstrapperFile Include="Microsoft.Net.Framework.3.5.SP1" >
       <ProductName>.NET Framework 3.5 SP1</ProductName>
    </BootstrapperFile>
    <BootstrapperFile Include="Microsoft.Windows.Installer.3.1" >
       <ProductName>Windows Installer 3.1</ProductName>
    </BootstrapperFile>
</ItemGroup>

<Target Name="setup">
    <GenerateBootstrapper
        ApplicationFile="myproduct.msi"
        ApplicationName="myproduct"
        BootstrapperItems="@(BootstrapperFile)"
        Path="C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\"
        ComponentsLocation="Relative"
        OutputPath="$(cddir)"
        Culture="en"/>
</Target>

на

<ItemGroup>
    <BootstrapperFile Include=".NETFramework,Version=v4.0" >
       <ProductName>.NET Framework 4.0</ProductName>
    </BootstrapperFile>
    <BootstrapperFile Include="Microsoft.Windows.Installer.3.1" >
       <ProductName>Windows Installer 3.1</ProductName>
    </BootstrapperFile>
</ItemGroup>

<Target Name="setup">
    <GenerateBootstrapper
        ApplicationFile="myproduct.msi"
        ApplicationName="myproduct"
        BootstrapperItems="@(BootstrapperFile)"
        Path="C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\"
        ComponentsLocation="Relative"
        OutputPath="$(cddir)"
        Culture="en"/>
</Target>

Я понял этоперейдя в каталог загрузчика SDK (C: \ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ Bootstrapper) на моем компьютере для Visual Studios 2010. Ниже приведен список проектов, которые могут быть прочитаны Wix и включены длясамонастройки.В каждой папке есть файл с именем Product.xml.Посмотрев на справку здесь для создания установщика .NET 3.5, я обнаружил, что атрибут ProductCode в теге Product появляется для идентификации имени элемента boostrap, поэтому, когда я изменил значение на то, на которое ссылается C: \ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ Bootstrapper \ Packages \ DotNetFX40 \ Product.xml все работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...