2017-01-10 17 views
0

Я создал проект установки MSI в VS2015, настроил все, а затем добавил ассоциацию расширения файлов с помощью «Редактора типов файлов», назначил мое расширение моему приложению в качестве команды Open.MSI installer создает открытый ключ открытой оболочки

команда был приложением из «папки приложения», расширение было установлено, то & ОТКРЫТЫМ был установлен, как NAME = & Open, Аргументы = глагол «% 1» = открыты. Ничего больше.

Я сгенерировал файл .msi, а затем начал. В конце установки я обнаружил, что в файле реестра \ HKEY_CLASSES_ROOT \\ shell \ open \ command в реестре было два элемента: один (по умолчанию) REG_SZ со значением «myexe» «% 1», как я ожидал

К сожалению, был еще один элемент: «command», «REG_MULTI_SZ» и Data были чем-то странным, например «LZ * a! T4 (v = ++ Tt $) tOk _> [1jfrS !, nB`L6ciHLW !," % 1 ", который я не знаю, что это такое. Когда я удаляю файл .msi и дважды щелкаю по файлу с моим зарегистрированным расширением, появляется всплывающее диалоговое окно, так как «сетевой ресурс не найден», а Windows хочет, чтобы мой установщик .msi вернулся (появляется диалоговое окно просмотра)! Я не знаю, как предотвратить эту нежелательную ситуацию. :(Любая помощь была бы очень признательна!

+0

Возможно, это связано с тем, что для каждого пользователя должна быть установлена ​​ассоциация файлов? –

+0

Вы имеете в виду «непреднамеренный» вместо «без присмотра» в вашем названии? –

+0

Ваш английский совершенно понятен и бесконечно лучше, чем мой венгерский. Однако я бы предложил изменить свой вопрос, чтобы изменить заголовок, так как «без присмотра» обычно означает «тихий» или «неинтерактивный» в контексте установки. :) –

ответ

1

Установщик Windows использует так называемый Darwin Descriptors для обеспечения отказоустойчивости, при котором поврежденная установка может быть исправлена ​​автоматически. Ваша попытка удалить .msi, а не ее удаление, действует как поврежденная установка , поэтому система пытается его исправить.Однако, поскольку сам .msi был удален, он должен обратиться за помощью.

Короткий ответ здесь - предложить вам не беспокоиться о точных значениях в разделе реестра Поскольку вы используете таблицу расширений вместо записи в таблице реестра, реестр представляет собой детальную информацию о реализации, вы должны предпочесть игнорировать такие детали. Вместо этого, если после успешной установки ваша программа запускается, как ожидается, при двойном щелчке ассоциаций и он прекращает делать это после правильной деинсталляции вашего приложения, все хорошо.

+0

Да, мой вопрос был неправ. Меня не беспокоит раздел реестра. Пользователь говорит, когда он устанавливает мое приложение (которое регистрирует ассоциацию файлов), затем удаляет .msi, затем дважды щелкает файл с конкретным расширением - вместо запуска моего приложения окна отображают диалоговое окно с ошибкой и пытаются найти MSI. Вопрос (пользователя) - почему? Почему это необходимо, после успешной установки? –

+1

@Zoltan: Установленный продукт поврежден (файлы или записи реестра были удалены после установки). Поэтому он будет исправлять, это функция, описанная в ответе. Не удаляйте MSI - это необходимо для этих ремонтов. Я рекомендую новый вопрос, если проблема является неожиданным ремонтом. – PhilDW