2016-07-24 5 views
0

Я использовал WiX для создания установщика (MSI) для приложения, которое прекрасно работает, за исключением этого необоснованного количества «приложений, которые используют файлы, которые необходимо обновить» с помощью этой установки ":Необоснованное количество «используемых файлов» во время процесса установки WiX

Excessive Files In Use during Installation

Это происходит для некоторых пользователей несколько раз, и я не совсем понимаю, почему это происходит, и как это исправить.

Я не вижу причин, по которым процесс установки моего приложения противоречит всем этим приложениям, и я не уверен, как его исследовать дальше.

Мое приложение представляет собой автономное настольное приложение - не любое дополнение или что-то, что взаимодействует или зависит от любого из перечисленных приложений.

Стадия мой процесс установки делает:

  1. Убедитесь, что база .Net 4.0 CP доступен (выход, если нет).
  2. Установите приложение в Program Files [Компания] [Product] (в том числе мой ехе, моя DLL, 2 третья сторона DLL файлы, которые я расслоении)
  3. Установка MS Visual C++ времени выполнения Redist 14,0 при необходимости
  4. Добавить пункты меню Пуск для приложения (запуск удалить ярлыки)
  5. Пользовательское действие для создания запланированной задачи, которая запускает мое приложение при входе пользователя в систему как администратор (приложение запускается в лотке как администратор).
  6. Пользовательское действие для запуска приложения после завершения установки (если флажок установлен в последнем диалоговом окне).

Любые советы о том, как это исправить, или по крайней мере выяснить, какие причины этого, будет понятно :-)

ответ

2

ли это происходит только тогда, когда вы запустите программу установки и на рабочем столе приложение уже запущено?

Чтобы исследовать это, лучше всего посмотреть на ваш файл журнала. Файл журнала будет иметь подробную информацию о файле, который проходит в другом процессе, что-то вроде:

Info 1603. The file C:\...\abc.exe is being held in use by the following process: Name: xyz, Id: 19010, Window Title: 'xyz'. Close that application and retry. 
Info 1603. The file C:\...\abc.dll is being held in use by the following process: Name: xyz123, Id: 9243, Window Title: 'xyz123'. Close that application and retry. 

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

+0

спасибо за все подробности :-) нет, это произошло только во время первоначальной установки, прежде чем мое приложение было установлено или запущено. Может ли это быть из-за модуля слияния MS Visual C++ Runtime? может быть, мой установщик заменит его, и все эти приложения затронуты этим? Я постараюсь искать подсказки в журналах, конечно, просто бросая угадать :-) – Itamar

+0

Yup Я думаю, что это хорошо продуманная догадка, C++ Runtime Redist может быть основной причиной. – Isaiah4110

+0

До сих пор не удавалось воспроизвести проблему с включенными журналами :-(В случае, если C++ Runtime Redist является основной причиной, что я могу сделать, чтобы справиться с этим? Я выполнил WiX How-To при его установке (http: // wixtoolset .org/documentation/manual/v3/howtos/redistributables_and_install_checks/install_vcredist.html). – Itamar

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