Попробуйте проверить в диалоговом окне «Переформатировать файл» (Ctrl + Alt + Shift + L), снимите флажок «Оптимизировать импорт», если он уже установлен.
В качестве альтернативы, вы можете добавить `PyUnresolvedReferences ':
# noinspection PyUnresolvedReferences
import A
# noinspection PyUnresolvedReferences
import B
Хотя есть некоторые сообщения о проблемах со ссылкой, https://youtrack.jetbrains.com/issue/PY-19837 [ 111].
Самый прямой путь состоял бы в том, чтобы запланировать Ваш RemoveExistingProducts после InstallExecute или InstallFinalize. Тем путем файл конфигурации не удален и затем установлен снова (как то, если Вы планируете перед InstallInitialize). Конечно, планирование RemoveExistingProduct так поздно означает, что необходимо быть очень осторожны относительно Правил Компонента.
Мой любимый должен рассматривать конфигурацию как "пользовательские данные" и не иметь installtouch это вообще. Вы поставляете значения по умолчанию с приложением, но любые изменения внесены пользователем в их профиле частного пользователя. Вытаскивает Вас из всех видов противных проблем миграции, которые просто не решены хорошо во время установки.
Вы когда-либо хотите перезаписанный? Если не в случаях как это я присваиваю файлы конфигурации их собственным компонентам и отмечаю их как Никогда Перезапись. Таким образом, обновления не перезапишут файл, но удаления удалят его.
например.
<Component Id="myComp" Guid="myguid" NeverOverwrite="yes">
Можно использовать свойство UPGRADINGPRODUCTCODE, чтобы проверить, обновляете ли Вы. Мы используем это, чтобы определить, должны ли мы выполнить наше пользовательское действие 'уборки':
<Custom Action="" After="CleanUpFiles">
<![CDATA[REMOVE="ALL" AND NOT UPGRADINGPRODUCTCODE]]>
</Custom>
Я действительно соглашаюсь с Rob, в котором конфигурация является пользовательскими данными, хранившими в их папках AppData и никогда не создаваемыми MSI. Вместо этого это установлено, делают значение по умолчанию (который мы храним как конфигурация по умолчанию в файлах программ), и скопированный самим приложением. Но мы не хотим оставлять эти вещи, создающие помехи машине пользователя, если они хотят удалить наш продукт, таким образом, мы сделали CleanUpFiles, который ищет HD любой оставленный позади мусор.