Bootstrapper (setup.exe) говорит: «.NET 3.5 не найден», но запуск .msi напрямую устанавливает приложение без проблем - PullRequest
1 голос
/ 07 апреля 2010

Наш установщик генерирует загрузчик (setup.exe) и файл MSI - довольно распространенный сценарий.

Одна из производственных машин сообщает о странной проблеме во время установки:

  • Если пользователь запускает загрузчик (setup.exe), он сообщает, что .NET 3.5 не установлен . Это происходит с учетной записью в группе администраторов. Независимо от того, запускают ли они это как администратор или нет, такое же поведение.

  • приложение прекрасно устанавливается, когда application.msi или OurInstallLauncher.exe (пояснение см. Ниже) запускается напрямую, независимо от того, применяется ли администратор.

  • Мы проверили, что на компьютере установлен .NET (как 64-битные, так и 32-битные «версии» = под C:\Windows\Microsoft.NET\Framework64 и C:\Windows\Microsoft.NET\Framework есть папка с именем v3.5.

Это происходит на 64-битной Windows 7. Я не могу воспроизвести его на моей 64-битной Windows 7. На Windows XP и Vista, до сих пор он работал без проблем в течение длительного времени.

Часть нашего скрипта сборки, которая объявляет задачу GenerateBootStrapper (ничего особенного):

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

  <GenerateBootstrapper
    ApplicationFile=".\Files\OurInstallLauncher.exe"        
    ApplicationName="App name"
    Culture="en"
    ComponentsLocation ="HomeSite"
    CopyComponents="True"
    Validate="True"
    BootstrapperItems="@(BootstrapperFile)"
    OutputPath="$(OutSubDir)"
    Path="$(SdkBootstrapperPath)" />

Примечание: OurInstallLauncher.exe - это селектор языка, который применяет преобразование к msi на основе выбора пользователя. Это вообще не относится к вопросу, потому что установщик никогда не заходит так далеко, как запуск этого exe! ​​

РЕДАКТИРОВАТЬ: он показывает, что .NET 3.5 отсутствует сразу после запуска setup.exe и предлагает установить .NET 3.5. Когда пользователь соглашается с установкой, установщик .NET 3.5 говорит, что .NET 3.5 уже установлен, и установщик MSI продолжает работу. Если они решат не устанавливать .NET 3.5, установка заканчивается.

Кто-нибудь видел такое поведение раньше?

Ответы [ 2 ]

3 голосов
/ 09 апреля 2010

Кажется, это ошибка в Bootstrapper или в Windows 7.

Решение:

C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\DotNetFX35\en\package.xml должен быть настроен на сборочной машине, потому что в немецких установках Windows 7 по умолчанию этот ключ отсутствует:

  <RegistryCheck Property="DotNet35InstallSuccess" 
Key="HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5\1033" Value="Install" />

В результате установщик сообщил, что на целевой машине не установлен .NET 3.5 (немецкий Windows 7).

Чтобы программа установки правильно обнаружила установленный .NET, C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\DotNetFX35\en\package.xml файл должен быть настроен следующим образом:

\ 1033 необходимо удалить из ключа проверки реестра:

  <RegistryCheck Property="DotNet35InstallSuccess" 
Key="HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5" Value="Install" />
0 голосов
/ 07 апреля 2010

Тот факт, что MSI устанавливается без проблем, неудивителен, учитывая, что установка загрузчика .NET 3.5 связана только с загрузчиком. Для установки пакетов MSI не требуется .NET (если вы не используете настраиваемые действия, реализованные в сборках .NET, или не регистрируете сборки .NET в GAC).

Удалите и переустановите .NET на компьютере, на котором возникла проблема. Скорее всего, это просто установка .NET, которая каким-то образом повреждена.

...