Совместная установка .NET Framework и VB.NET Apps в одной программе установки exe - PullRequest
2 голосов
/ 29 октября 2011

Программное обеспечение, написанное на Visual Basic, требует наличия .NET Framework для установки на компьютер конечного пользователя. - это большая программная среда, которую пользователь, вероятно, не будет иметь на своем компьютере. Как я могу распространять свое приложение VB.NET с платформой .NET, чтобы оно могло нормально работать на компьютере пользователя?

Когда я пытаюсь создать мое развертывание / установщик , вы можете подумать, что оно автоматически включает в себя настройку .NET 4.0 для конечного пользователя, но не . Когда я просматриваю документацию Microsoft следующим образом: Как: установить необходимые компоненты с помощью приложения ClickOnce все, что я получаю, это то, что я уже пробовал и не работает. Я попытался создать всевозможные установщики, которые устанавливают папку Microsoft .NET на компьютер конечного пользователя или настоящий исполняемый файл .NET. Кажется, что ничего из этого не работает, даже в сторонних создателях установки, таких как InnoSetup.

Мне нужно все в одном большом setup.exe файле. Мне все равно, будет ли он занимать много места, если он находится в одном файле и все встроено вместе (чтобы было проще для пользователя).

Как упаковать инфраструктуру .NET 4.0 и установить ее с моим приложением VB.NET в файле ONE Setup.exe? Если это невозможно, где я могу найти актуальные файлы .NET 4 Framework?

Ответы [ 2 ]

5 голосов
/ 29 октября 2011

Вам необходимо добавить соответствующую предпосылку. Вот ссылка на соответствующую документацию MSDN: Как: установить необходимые компоненты с помощью приложения ClickOnce

1 голос
/ 31 октября 2011

Я использовал InnoSetup, чтобы определить, установлена ​​ли среда выполнения .NET, а если нет, загрузить и установить ее автоматически. Я нашел этот код на их сайте. Этот код не проверен, но должен дать вам хорошее представление о том, что нужно сделать.

[Files]
Source: "C:\SourceDirectory\dotNetFx40_Client_x86_x64.exe"; DestDir: "{src}"; 

Приведенный выше код будет включать клиентскую среду .NET 4.0 как часть программы установки.

[Code]
function IsDotNetDetected(version: string; service: cardinal): boolean;
// Indicates whether the specified version and service pack of the .NET Framework is installed.
//
// version -- Specify one of these strings for the required .NET Framework version:
//    'v1.1.4322'     .NET Framework 1.1
//    'v2.0.50727'    .NET Framework 2.0
//    'v3.0'          .NET Framework 3.0
//    'v3.5'          .NET Framework 3.5
//    'v4\Client'     .NET Framework 4.0 Client Profile
//    'v4\Full'       .NET Framework 4.0 Full Installation
//
// service -- Specify any non-negative integer for the required service pack level:
//    0               No service packs required
//    1, 2, etc.      Service pack 1, 2, etc. required
var
    key: string;
    install, serviceCount: cardinal;
    success: boolean;
begin
    key := 'SOFTWARE\Microsoft\NET Framework Setup\NDP\' + version;
    // .NET 3.0 uses value InstallSuccess in subkey Setup
    if Pos('v3.0', version) = 1 then begin
        success := RegQueryDWordValue(HKLM, key + '\Setup', 'InstallSuccess', install);
    end else begin
        success := RegQueryDWordValue(HKLM, key, 'Install', install);
    end;
    // .NET 4.0 uses value Servicing instead of SP
    if Pos('v4', version) = 1 then begin
        success := success and RegQueryDWordValue(HKLM, key, 'Servicing', serviceCount);
    end else begin
        success := success and RegQueryDWordValue(HKLM, key, 'SP', serviceCount);
    end;
    result := success and (install = 1) and (serviceCount >= service);
end;

function InitializeSetup(): Boolean;
var
    ResultCode: Integer;
begin
    if not IsDotNetDetected('v4\Client', 0) then begin
        Exec(ExpandConstant('{src}\dotNetFx40_Client_x86_x64.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
        result := (ResultCode == 0);
    end else
        result := true;
end;
...