1

У меня есть программа, которую я устанавливаю, используя скрипт NSIS. Последний шаг в установщике - запись в ключ запуска реестра и запуск программы при запуске. Я подтвердил, что под

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run 

существует ключ

MyCompany Program - C:\MyCompany\Program\launch.vbs

Я пробовал ключ с и без кавычек, но не было никакого воздействия. Я подтвердил, что реестр читает из CurrentVersion\Run, добавив

Notepad - C:\windows\notepad.exe

и Блокнот теперь запускается при запуске. Сценарий launch.vbs - это один из способов запуска сценария без окна cmd.exe:

'HideBat.vbs from https://superuser.com/questions/140047/how-to-run-a-batch-file-without-launching-a-command-window
CreateObject("Wscript.Shell").Run "cmd /c " & chr(34) & "C:\MyCompany\Program\run.cmd " & chr(34), 0, True

Я подтвердил, что вызов launch.vbs из окна проводника или из cmd.exe работает, как я ожидаю (запуск моей программы). msconfig подтверждает, что C:\MyCompany\Program\launch.vbs указан на вкладке запуска. Вкладка «Безопасность» в «Свойствах файла» указывает, что все пользователи должны иметь права на чтение и выполнение. То же самое можно сказать и о run.cmd.

На данный момент я не знаю, почему моя программа не запускается, и я не могу найти эффективный способ ее отладки.

Система Windows 7 Профессиональная 64-битная.

1 ответ1

1

С помощью LPChip я начал отладку сообщений и подтвердил, что скрипт запускается, но выдает ошибку. Я обновил файл launch.vbs до

CreateObject("Wscript.Shell").Run "cmd /k " & chr(34) & "C:\MyCompany\Program\run.cmd " & chr(34), 1, True

(обратите внимание на /k, чтобы сохранить окно, и 1, чтобы показать). Оттуда было очевидно, что java не установлен на пути к классам для сценариев, запускаемых через CurrentVersion\Run. Жесткое кодирование пути к java (которое наши клиенты будут вынуждены использовать в любом случае) в run.cmd решило проблему.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .