オペレーティング システムがインストールされているドライブのディスク ボリュームを取得する必要があるセットアップを構築しています。次のコードを試しました:
Function ShowDiskVolumeSerialNumber
!define GetVolumeInformation "Kernel32::GetVolumeInformation(t,t,i,*i,*i,*i,t,i) i"
System::Call '${GetVolumeInformation ("$0",,${NSIS_MAX_STRLEN},.r0,,,,${NSIS_MAX_STRLEN})'
IntFmt $0 "%08X" $0
MessageBox MB_OK $0
FunctionEnd
目的のドライブを指定して、上記の関数を呼び出します。
StrCpy $0 "C:\"
Call ShowDiskVolumeSerialNumber
上記はc:\
ドライブのボリューム番号を示します。ただし、OS がインストールされている場合、d:\
または動作e:\
しません。OSがインストールされているドライブを自動で検出し、そのボリューム番号を取得する機能が欲しいです。
次に、取得されたボリューム番号にはハイフンがありません (例: 349620C1
)。として取得したボリューム通し番号が必要3496-20C1
です。
誰かが完全なNSIS機能を提供してくれませんか?
- OS がインストールされているドライブを自動的に検出し、そのシリアル番号をハイフンで区切って取得します。