私は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;
ClickOnceデプロイされたアプリケーションは、マシンの設定を変更できません。 –
あなたの心がClickOnceに設定されていない場合は、NSISをご覧ください。私は必要な場合は、ここから少しの助けを借りて、.NETを検出してダウンロード/インストールするNSISを持つインストーラを書いた... http://stackoverflow.com/questions/632587/how-to-communicate-with-net-3- 5-sp1-bootstrapper –
すべてのファイルを1つの大きなセットアップファイルに入れたいですか? –