Проверка зависимости.NET перед запуском

У меня есть несколько приложений, что я продолжаю работать и люблю распределять друзьям, которые требуют Microsoft Provided .dlls и или платформы. А именно, XNA. Я устал от возвращения электронных писем от них говорящий, что "Оно отказало", когда в действительности, все, это произошло, у них нет XNA (или.NET 3.5, или безотносительно) установленный. Однако Основной не может зафиксировать эти ошибки, потому что .exe загружает их, прежде чем основное будет даже выполнено.

Так, мой вопрос, как был бы я идти о создании средства запуска, которое могло проверить на вещи как.NET 3.5, XNA, и т.д. и отобразиться, хорошее сообщение об ошибке ("Это приложение требует XNA 3.0, загрузите его здесь!") вместо того, чтобы быть похожим на разрушенный?

ОБНОВЛЕНИЕ: Я должен был указать, что хочу сделать это, не используя установщик. У меня есть шаблон установщик WIX, который позволяет мне проверять на зависимости, но иногда я просто хочу загрузить zip для людей для проигрывания вокруг с.

5
задан Jeff 3 February 2010 в 23:07
поделиться

3 ответа

после JMD

THen доступен f1 в предложении catch. ЭТОТ ответ также нет. Таким образом, вы видите, что правила определения области не позволяют вам даже задать этот вопрос в коде.

Единственное, что дало бы то, что объект существовал, было бы, если бы его деструктор работал - но он не работал, если бы конструктор не завершил

-121--4631727-

Попробуйте:

protected override bool ProcessCmdKey(ref Message msg, Keys k)
{
    if (k == Keys.Enter || k == Keys.Return)
    {
        this.Text = null;
        return true;
    }

    return base.ProcessCmdKey(ref msg, k);
}
-121-2594550-

Чтобы сделать это без программы установки, можно создать сценарий «запуска», который не более чем вызовет «реальную» точку входа после предварительной проверки зависимостей.

Поскольку отсутствующие зависимости кажутся для вас очень распространенным источником боли, вероятно, рекомендуется записать средство запуска в том виде, который не подходит для того, чтобы не иметь зависимостей, которые еще не находятся в голой установке Windows, например, сценарий AutoIt , упакованный в виде исполняемого файла.

Const $AppTitle = 'Whizzy Game'
Const $MB_ICONERROR = 16

If RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5', 'Install') <> 1 Then
    MsgBox($MB_ICONERROR, $AppTitle, 'The .NET Framework runtime v3.5 is required to run.')
    Exit 1
EndIf

If RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\XNA\Framework\v3.1', 'Installed') <> 1 Then
    MsgBox($MB_ICONERROR, $AppTitle, 'The XNA Framework runtime v3.1 is required to run.')
    Exit 1
EndIf

Exit RunWait('WhizzySoftware.WhizzyGame.EntryPoint.exe')
7
ответ дан 13 December 2019 в 22:07
поделиться

Вы можете создать проект установки (который компилируется в установщик MSI) для своего приложения. В конфигурации этого установщика вы можете установить предварительные требования, такие как .NET Framework vX.X. Я не совсем уверен насчет XNA, но предполагаю, что это также можно указать в качестве предварительного условия.

1
ответ дан 13 December 2019 в 22:07
поделиться

Проще всего это сделать во время установки. Включите распространяемый компонент Microsoft XNA Framework в свой установочный пакет.

Вы можете использовать функцию MsiQueryProductState , чтобы определить, установлена ​​ли уже платформа.

Или вы можете проверить реестр на наличие:

[HKEY_LOCAL_MACHINE\Software\Microsoft\XNA\Framework\v3.1]
Installed=1

(Эту проверку можно также выполнить в приложении запуска.)

Вот статья о распространении вашей игры с разделом об обнаружении и установке предварительных требований.

2
ответ дан 13 December 2019 в 22:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: