Я не знаком с NSIS, но вам может пригодиться этот маленький трюк "DOS".
Я заметил, что с NSIS можно открыть файл, так что это может помочь -
chkntfs c: | find "file system" > yourfile.abc
CHKNTFS - это утилита для управления операциями CHKDSK, но если вы запускаете команду без переключателей командной строки, она просто сообщает о результатах.
"C:" - это интересующий вас диск -
Вы можете запустить это из командной строки, чтобы увидеть результат, без "> yourfile.abc"
конечно, часть, которая направляет вывод в этот файл.
Прежде чем кто-то проголосует против этого, я просто предлагаю это как мысль, провоцирующую ПРЕДЛОЖЕНИЕ, возможно, вызывающую реальное решение, и помните ТАК девиз - будь добрым ... лол ...
РЕДАКТИРОВАТЬ: этот фрагмент может помочь - у меня нет способа действительно проверить это - это полное использование времени - и вы, скорее всего, захотите RUN-TIME ... НО, это может дать вам идею .. .
Я "предполагаю", что нет определения, уже названного NTFS - если так, измените это соответственно. Первый вызов СОЗДАЕТ включаемый файл, второй ПРИНИМАЕТ к нему (double>) ... Параметр / C для FIND просто СЧИТАЕТ числовые строки, содержащие элемент поиска. Следовательно, результат 0 или 1.
!system 'echo "!define NTFS=" > newinclude.nsh'
!system 'chkntfs c: | find /c "NTFS" >> newinclude.nsh'
!include newinclude.nsh
!ifdef NTFS
!echo "NTFS is defined and value should reflect accordingly; 0=NO, 1=Yes it is NTFS"
!endif
РЕДАКТИРОВАТЬ: (опять же, LOL)
вот фрагмент, который установит переменную ENVIRONMENT, которая, насколько я могу судить, должна быть довольно легко читаемой во время выполнения - вы могли бы создать переменную для выполнения, соответственно заменив букву диска.
ExecWait 'chkntfs c: | find /c "NTFS" > tempfile.abc'
ExecWait 'set /p NTFS= < tempfile.abc'
Exec 'del tempfile.abc'
Теперь переменная среды NTFS должна содержать 0, если не NTFS, и 1, если проверяемый том IS NTFS.
или напрямую
ExecWait 'chkntfs c: | find /c "NTFS"' $0
$ 0 содержит код возврата; Результаты в некотором роде обратные, так как это код возврата ERROR. Если 0, то у вас есть NTFS, а> 0 означает, что нет NTFS.