2015-01-13 3 views
1

Я работаю над программой, которая должна быть установлена ​​только на ПК компании, чтобы предотвратить ее запуск на других компьютерах. Единственное, что объединяет все эти компьютеры, - это .exe-файл в одном месте на каждом ПК (т. Е. C: \ Program Files \ program_name \ program.exe).Проверка определенных программных файлов в NSIS

Ошибка .exe не всегда работает, поэтому я не могу использовать nsProcesss.

Есть ли способ проверить этот файл перед установкой и отменой, если он отсутствует?

ответ

1

Так что я нашел решение моей проблемы:

IfFileExists "C:\Program Files\program_name\program.exe" file_found file_not_found 
file_not_found: 
StrCpy $0 "This computer is not valid" 
Abort 

file_found: 

;rest of .nsi 

IfFileExists проверяет, существует ли следующий файл. Переход на file_found или file_not_found. Я выбираю прервать, если файл is not_found

+0

«Program Files» отличается в зависимости от языка ОС, '$ PROGRAMFILES' должен быть более безопасным (если только программа не доступна и в 64-разрядной версии). Также имейте в виду, что пользователь может установить программу в любую другую папку, которая ему нравится. – idleberg

+0

Привет @idleberg, в большинстве случаев вы правы, что $ PROGRAMFILES - лучший способ. Однако в этом случае линия используется для обеспечения правильной операционной системы, на которой она устанавливается (встроенная версия Windows XP), поэтому в этом случае «программные файлы» на самом деле являются предпочтительным решением – Luke

Смежные вопросы