Инсталлятор для своего приложения со встроенным дистрибутивом .NET?

Посоветуйте хороший билдер инсталляторов, который позволяет именно зашить дистрибутив .NET нужной версии, и он автоматически запускается, а не просто выводит окошко или предлагает скачать (как это делает, например, Smart Install Maker).
  • Вопрос задан
  • 718 просмотров
Пригласить эксперта
Ответы на вопрос 2
@akass
Developer
Wix
Ответ написан
Комментировать
@Sterk
Программист
Inno Setup. Пример скрипта:
; Script generated by the Inno Script Studio Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "Моя программа"
#define MyAppVersion "1.6.2.0"
#define MyAppPublisher "ООО Бирюльки"
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "NameOfMainExeFile.exe"
#define SetupName "setup_my_programm"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{390B67EF-46E4-45B6-B6F9-C9C6362FE337}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName="{pf}\MyProgramm"
DefaultGroupName={#MyAppName}
OutputBaseFilename={#SetupName}{#MyAppVersion}
Compression=lzma
SolidCompression=yes

[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"

; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Files]
Source: "{#SourcePath}NDP461-KB3102436-x86-x64-AllOS-ENU.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall; Check: not DotNetFrameworkIsInstalled
Source: "{#SourcePath}DopCalc\bin\Release\MyProgramm.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#SourcePath}DopCalc\bin\Release\MyProgramm.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#SourcePath}DopCalc\bin\Release\MyProgramm.exe.config"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#SourcePath}DopCalc\bin\Release\GalaSoft.MvvmLight.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#SourcePath}DopCalc\bin\Release\System.Web.Razor.xml"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#SourcePath}DopCalc\bin\Release\System.Windows.Interactivity.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#SourcePath}DopCalc\bin\Release\Templates\*"; DestDir: "{app}\Templates"; Flags: ignoreversion createallsubdirs recursesubdirs

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
Filename: "{tmp}\NDP461-KB3102436-x86-x64-AllOS-ENU.exe"; Parameters: "/passive /showfinalerror /norestart /x86 /x64"; Check: not DotNetFrameworkIsInstalled; StatusMsg: Microsoft Framework 4.6.1 устанавливается. Пожалуйста подождите... 

[Code]
function DotNetFrameworkIsInstalled(): Boolean;
var
  bSuccess: Boolean;
  regVersion: Cardinal;
begin
  Result := False;
  bSuccess := RegQueryDWordValue(HKLM, 'Software\Microsoft\NET Framework Setup\NDP\v4\Full', 'Release', regVersion);
  if (True = bSuccess) and (regVersion >= 394254) then begin
    Result := True;
  end;
end;


В функции проверки установлен ли .NET нужно будет заменить 394254 на код вашей версии .NET: MSDN
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы