.NET Frameworkをチェックし、そこにない場合はインストールするNSISインストーラを作成したいと思います。あなたはこれのためのスクリプトを教えてくれますか?私はNSISにはとても新しいです。.NET FrameworkをチェックするNSISインストーラ
答えて
!define DOT_MAJOR "2"
!define DOT_MINOR "0"
Function IsDotNetInstalled
StrCpy $0 "0"
StrCpy $1 "SOFTWARE\Microsoft\.NETFramework" ;registry entry to look in.
StrCpy $2 0
StartEnum:
;Enumerate the versions installed.
EnumRegKey $3 HKLM "$1\policy" $2
;If we don't find any versions installed, it's not here.
StrCmp $3 "" noDotNet notEmpty
;We found something.
notEmpty:
;Find out if the RegKey starts with 'v'.
;If it doesn't, goto the next key.
StrCpy $4 $3 1 0
StrCmp $4 "v" +1 goNext
StrCpy $4 $3 1 1
;It starts with 'v'. Now check to see how the installed major version
;relates to our required major version.
;If it's equal check the minor version, if it's greater,
;we found a good RegKey.
IntCmp $4 ${DOT_MAJOR} +1 goNext yesDotNetReg
;Check the minor version. If it's equal or greater to our requested
;version then we're good.
StrCpy $4 $3 1 3
IntCmp $4 ${DOT_MINOR} yesDotNetReg goNext yesDotNetReg
goNext:
;Go to the next RegKey.
IntOp $2 $2 + 1
goto StartEnum
yesDotNetReg:
;Now that we've found a good RegKey, let's make sure it's actually
;installed by getting the install path and checking to see if the
;mscorlib.dll exists.
EnumRegValue $2 HKLM "$1\policy\$3" 0
;$2 should equal whatever comes after the major and minor versions
;(ie, v1.1.4322)
StrCmp $2 "" noDotNet
ReadRegStr $4 HKLM $1 "InstallRoot"
;Hopefully the install root isn't empty.
StrCmp $4 "" noDotNet
;build the actuall directory path to mscorlib.dll.
StrCpy $4 "$4$3.$2\mscorlib.dll"
IfFileExists $4 yesDotNet noDotNet
noDotNet:
;Nope, something went wrong along the way. Looks like the proper .NETFramework isn't installed.
Push "NOK"
Return
yesDotNet:
;Everything checks out. Go on with the rest of the installation.
Push "OK"
Return
FunctionEnd
次のコードをチェック.NET 3.5がインストールされている、とされていない場合、それは黙ってそれをインストールするかどうか。レジストリ内に指定されたキーが存在するかどうかをチェックするマクロを使用します。
マクロ:
# This macro checks if a certain key exists in the registry
!macro IfKeyExists ROOT MAIN_KEY KEY
push $R0
push $R1
!define Index 'Line${__LINE__}'
StrCpy $R1 "0"
"${Index}-Loop:"
; Check for Key
EnumRegKey $R0 ${ROOT} "${MAIN_KEY}" "$R1"
StrCmp $R0 "" "${Index}-False"
IntOp $R1 $R1 + 1
StrCmp $R0 "${KEY}" "${Index}-True" "${Index}-Loop"
"${Index}-True:"
;Return 1 if found
push "1"
goto "${Index}-End"
"${Index}-False:"
;Return 0 if not found
push "0"
goto "${Index}-End"
"${Index}-End:"
!undef Index
exch 2
pop $R0
pop $R1
!macroend
機能:このためには
# The function that checks if .net is already installed
Function CheckDotNet
!insertmacro IfKeyExists HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall" "{CE2CDD62-0124-36CA-84D3-9F4DCF5C5BD9}"
Pop $R0
${If} $R0 == 0 # not installed NOTE: /q:a means this will be a silent installation
ExecWait "$EXEDIR\dotnetfx35.exe /q:a"
Goto endPrerequisites
${EndIf}
endPrerequisites:
# Code to execute after checking/installing (if necessary) .Net
# You can just put "Goto +2" here, in order to go to the next section/function
FunctionEnd
はあなたが.onInit
機能のどこかにCheckDotNet
を呼び出す必要があり、仕事とことを確認しますdotnetfx35.exe
は、$EXEDIR
のインストーラにパックされています(もちろん、 eパラメータを使用してください)。ネットの他のバージョンの
、私は唯一異なる事がIfKeyExists
マクロパラメータで指定されたレジストリキーになると仮定し(今は{CE2CDD62-0124-36CA-84D3-9F4DCF5C5BD9}
ある)
ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client" Install
その後、あなたは$0
をチェックする必要があります。それはあなた次第です。
これは他の回答と比較してどのような点が追加されていると思いますか?それは何をすべきか、それをインストールするのには向いていません。 –
私が(4.0 for .NETは、フルインストールし、あなたがsomwhere見つけることができる「DotNET.nsh」pluging、との問題があった し、単にこのソリューションを使用する - あなたが同様にそれを制限することができ 、私は必要とされクライアントパッケージ):
ClearErrors
ReadRegDWORD $0 HKLM "Software\Microsoft\Net Framework Setup\NDP\v4\Full" "Install"
IfErrors dotNet40NotFound
IntCmp $0 1 dotNet40Found
dotNet40NotFound:
Banner::show /set 76 "Installing .NET Framework 4.0" "Please wait"
File /nonfatal "tools\dotNetFx40_Full_setup.exe"
; if you don't have $TEMP already, add here:
; SetOutPath $TEMP
ExecWait "$TEMP\dotNetFx40_Full_setup.exe /passive /norestart"
Delete /REBOOTOK "$TEMP\dotNetFx40_Full_setup.exe"
Banner::destroy
dotNet40Found:
バナーのものはオプションで、あなただけのDetailPrint
など使用することができます。 この方法では、.NET 4.0向けのWebインストーラを手に入れますが、かなり小さな (.NET版ではなく)です。インストーラは必要な場合には をダウンロードします。また、NSISコードを必要としません。
おそらくupvoteの正しい理由ではないかもしれませんが、このスクリプトコードはこれを行う他の例よりも私にとって理にかなっています。ありがとう。 –
DotNetVerスクリプトを試してください。それはLogicLibを使用し、非常に使いやすいです。
- HasDotNet <バージョン>チェック.NETフレームワークの特定のバージョンがインストールされている場合。 <バージョン>は、1.0,1.1,2.0,3.0,3.5,4.0の値で置き換えることができます。
- AtLeastDotNetServicePack .NET Frameworkに少なくとも指定されたバージョンのサービスパックがあるかどうかを確認します。
- IsDotNetServicePackは、.NET Frameworkに指定されたとおりのサービスパックバージョンがあるかどうかを確認します。
- HasDotNetClientProfileは、.NETフレームワークがクライアントプロファイルインストールであるかどうかを確認します。
- HasDotNetFullProfile。NETフレームワークは完全インストールです。
サンプル:含む
${If} ${HasDotNet4.0} DetailPrint "Microsoft .NET Framework 4.0 installed." ${If} ${DOTNETVER_4_0} AtLeastDotNetServicePack 1 DetailPrint "Microsoft .NET Framework 4.0 is at least SP1." ${Else} DetailPrint "Microsoft .NET Framework 4.0 SP1 not installed." ${EndIf} ${If} ${DOTNETVER_4_0} HasDotNetClientProfile 1 DetailPrint "Microsoft .NET Framework 4.0 (Client Profile) available." ${EndIf} ${If} ${DOTNETVER_4_0} HasDotNetFullProfile 1 DetailPrint "Microsoft .NET Framework 4.0 (Full Profile) available." ${EndIf} ${If} ${DOTNETVER_4_0} HasDotNetFullProfile 0 DetailPrint "Microsoft .NET Framework 4.0 (Full Profile) not available." ${EndIf} ${EndIf}
- 1. 私のNSISインストーラを変更するアプリケーションバージョン
- 2. NSISインストーラからブランディングを削除する
- 3. LinuxマシンでNSISインストーラをインストールする
- 4. NSISインストーラのプロパティを変更する
- 5. 再頒布可能.NET Frameworkのインストーラ
- 6. NSIS - インストーラexeファイルを再構築
- 7. NSISインストーラは、奇妙なブラックマークを示す
- 8. NSIS - インストーラ自体をコピーします
- 9. .NET Framework 4のWiXチェック
- 10. NSISインストーラがバックグラウンドで開きます
- 11. NSISインストーラがバックグラウンドで開きます。
- 12. nsisインストーラはバックグラウンドで開始します
- 13. .NET Framework(3.5以降)に関係するインストーラの作成方法?
- 14. prequisites(.net framework、sql server)をインストールできる無料のインストーラ
- 15. 管理者権限のないNSISインストーラ
- 16. NSISインストーラの単一インスタンスの確認
- 17. インストーラのソフトウェアタイプ(NSIS、Inno、Windowsインストーラなど)を特定する方法は?
- 18. NSISインストーラがコンピュータを変更するように頼みます
- 19. Jenkinsを使用してNSISインストーラを構築する
- 20. NSISで擬似インストーラを作成するには?
- 21. NSISインストーラでバッチファイルを実行する際の問題
- 22. NSISインストーラのパラメータで.batファイルを実行する方法
- 23. NSISインストーラからQuickTime関連ファイルを実行するには?
- 24. NSISインストーラの終了ページにデスクトップショートカットオプションを追加するには?
- 25. NSISインストーラの後に実行可能ファイルを開始する
- 26. NSISインストーラでデフォルトで詳細を表示する方法
- 27. NSISインストーラからWindows 7のスタートメニューを "リフレッシュ"するには?
- 28. 再配布可能なオフラインの.NET Framework 3.5のインストーラ
- 29. ネイティブ.Netインストーラ/ bootstraper
- 30. NSISインストーラから複数のアプリケーションをインストールできない
ええと、私もこれに興味があります! –
[NSIS wiki](http://nsis.sourceforge.net/Main_Page)にいくつかの例があります。 [this one](http://nsis.sourceforge.net/DotNET)を試してください。 –
インストールされているバージョンを確認する方法は次のとおりです。http://forums.winamp.com/showthread.php?t=324928 – dastanko