Это комментарий к моему комментарию к ответу stevendaniels (см. выше):
В первом разделе кода выше range.setStart (node, (range .startOffset - 1)); сбой при запуске первого слова в «узле», поскольку он пытается установить диапазон на отрицательное значение. Я попытался добавить логику, чтобы предотвратить это, но затем последующий range.setStart (node, range.startOffset + 1); возвращает все, кроме первой буквы первого слова. Кроме того, когда слова разделяются новой строкой, последнее слово в предыдущей строке возвращается в дополнение к щелкнутому слову. Итак, это требует некоторой работы.
blockquote>Вот мой код, чтобы сделать код расширения диапазона в этом ответе надежным:
while (range.startOffset !== 0) { // start of node range.setStart(node, range.startOffset - 1) // back up 1 char if (range.toString().search(/\s/) === 0) { // space character range.setStart(node, range.startOffset + 1);// move forward 1 char break; } } while (range.endOffset < node.length) { // end of node range.setEnd(node, range.endOffset + 1) // forward 1 char if (range.toString().search(/\s/) !== -1) { // space character range.setEnd(node, range.endOffset - 1);// back 1 char break; } }
Мне жаль, что я зря потратил на это время.
Решение было слишком простым. Я забыл поместить атрибут [CustomAction] в этот конкретный метод. Таким образом, хотя это было последнее действие, которое я написал в моем файле CustomAction.cs, оно было первым, которое вызывалось в InstallExecuteSequence. И из-за этого я ввел себя в заблуждение, думая, что он не может найти файл. Ну, а также тот факт, что я, должно быть, очень хотел спать ...
Так или иначе, в поисках ответа мне удалось натолкнуться на множество хороших ресурсов, особенно серию Алекса Шевчука на Wix . Еще я понял, что мне не нужно устанавливать dll-файл настраиваемого действия. Я просто ссылаюсь на него из своего проекта Wix и указываю путь к нему.
Копируется ли UnInstallCA.CA.dll на целевой компьютер во время установки? Похоже, что при деинсталляции его нет.
Если он попал - может ли он работать? (попробуйте запустить его с целевой машины, чтобы увидеть, может ли он делать то, что должен делать - возможно, вам нужно отправить какую-нибудь другую dll, которую вы используете, с этой - или, может быть, какой-нибудь распространяемый пакет)