Разве Вы не думаете, пишущий, что программы установщика, возможно, были более простыми? [закрытый]

Оберните ваш InputStream фильтрующим:

class QuotedNewLineFilterInputStream extends FilterInputStream {

    private boolean insideQuotes;

    public QuotedNewLineFilterInputStream(InputStream in) {
        super(in);
    }

    @Override
    public int read() throws IOException {
        int c = super.read();
        if (c == '\"') {
            insideQuotes = !insideQuotes;
        }
        if (insideQuotes && (c == '\n' || c == '\r')) {
            c = read();
        }
        return c;
    }
}

Это удалит LF и CR внутри двойных кавычек. Поскольку все они являются ASCII, а XML вероятен в UTF-8, можно работать на байтовом уровне (InputStream).

Кстати, замена на \t может лучше сохранить макет (c = \ t 'i.o. c = read()).

Не очень умный, но простое решение.

7
задан Hemant 12 March 2009 в 06:28
поделиться

8 ответов

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

  1. Ситуации с дескриптором, где по некоторым причинам ошибка происходит во время установки. Что Вы делаете затем?
  2. Дескриптор выходит как безопасность. Что, если пользователь установки не имеет прав на конкретные папки/ключи реестра?
  3. Правильно очистка после установки
  4. Исправление и управление исправлениями
  5. Выполнение дополнительных задач - регистрирующийся COM-объекты, создавая базы данных, создавая ярлыки, создавая удаление shotcut и так далее
  6. Установка предпосылок
  7. Позволяющие пользователи выбирают который функции установить

Ваши собственные сценарии для решения всех этих проблем в конечном счете становятся большей проблемой, чем сама установка!

Я рекомендую проверить Wix. Это не точно детские игрушки, но это сделало задание. Если Вы устанавливаете Исполненный по обету, как Visual Studio добавляет в Вас, заставляют intellisense помогать Вам strucutre теги правильно. Со справочным файлом можно создать довольно функциональные гибкие установки

7
ответ дан 6 December 2019 в 10:03
поделиться

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

Я соглашаюсь, установщик Windows управляет мной безумный. Но существует много ситуаций, что xcopy просто не решает. Иногда Вы хотите установить для многочисленных пользователей, не только текущего пользователя. Иногда необходимо зарегистрировать COM-объекты. Иногда необходимо сделать целый набор изменений в системе, таких как регистрирующиеся сервисы для выполнения при запуске, соединившись с сетевыми серверами, и т.д. Иногда у Вас есть пользователи, которые не могут использовать командную строку. И Вы всегда хотите смочь к роли, которую все это поддерживает, когда что-то перестало работать на полпути через.

Была целая база данных MSI, приближаются к лучшему способу сделать его? Я не уверен. Я загнал бы гвозди в голову, чем записал бы другую строку кода WiX? Вероятно. Но необходимо признать, это делает хорошее задание выполнения всего, что Вы могли когда-либо возможно хотеть. И когда это не делает всегда существует опция CustomAction.

Действительно, то, что я хотел бы видеть, является лучшей документацией (действительно, что такое действие типа 50? Как насчет того, чтобы дать ему имя?) и намного больше легко узурпируемых шаблонов.

И псевдоним группы пользователей WiX делает хорошее задание ответа на вопросы.

Необходимо прочитать блог RobMen. Он делает хорошее задание, объясняющее, почему вещами является способ, которым они. Он сделал большое размышление (больше, чем какой-либо человек должен) о проблемах установки.

3
ответ дан 6 December 2019 в 10:03
поделиться

Посмотрите на Вас NSIS: http://en.wikipedia.org/wiki/Nullsoft_Scriptable_Install_System?

И 1: да, 2: нет

2
ответ дан 6 December 2019 в 10:03
поделиться

Я не думаю, что Вы будете видеть слишком много разногласий здесь, особенно относительно MSI. Я думаю, что одна вещь иметь в виду состоит в том, чтобы наблюдать способ, которым много программ используют файлы MSI в эти дни. Отображение диалоговых окон UI и совершение сложного выбора конфигурации с MSI очень слабы просто из-за способа, которым был разработан Windows Installer, таким образом, я заметил много программ, разделяемых на набор ребенка MSIs, которые установлены с минимальным UI родительской программой установки. Мастер установки SQL Server 2008 года делает это. UPS WorldShip делает это. И Paint.NET делает это, также - мастер, который Вы видите, является приложением Windows Forms, и он запускается msiexec самостоятельно (Вы видите минимальный UI всплывающего окна Windows Installer сверху белого окна мастера), передавая любые параметры конфигурации как аргументы свойства к msiexec.

Общий сценарий, где это подходит, - то, где для кого-то определяют задачу с созданием установщика для приложения, которое имеет и сервер и клиентские дубликаты. Если пользователь выбирает параметр сервера, то они могут или не могут хотеть, чтобы новая база данных была установлена, что означает устанавливать SQL Server. Но Вы не можете только установить SQL Server, в то время как Вы посреди своей собственной установки, потому что Windows Installer не позволит Вам сделать это. Таким образом, частое решение состоит в том, чтобы записать приложение, которое отображает мастер, который позволяет пользователю настраивать все опции настройки, и затем Ваше приложение запускает файлы MSI по мере необходимости для SQL Server, Вашего серверного приложения и Вашего клиентского приложения в минимальном режиме UI; в основном, сторонясь аспекта "функций" Windows Installer полностью и перемещая его до уровня MSI. 4.5's установки нескольких-пакетов, кажется, шаг вперед в этом направлении. Этот формат также особенно полезен, если также необходимо циклично выполниться в установщиках не-MSI от третьих лиц как часть процесса установки, как установка драйвера принтера для некоторого причудливого принтера торговой точки.

Я также соглашусь, что Windows Installer испытывает недостаток во встроенной поддержке сценариев обычного развертывания. Это предназначено для того, когда установка не является XCOPY, но они, кажется, пропускают то, что установка обычно не является просто "файлами + ярлыки + ключи реестра", также. Нет никаких встроенных действий для того, чтобы запустить веб-сайты IIS, регистрируя сертификаты, создавая и обновляя базы данных, добавляя блоки к GAC, и так далее. Я предполагаю, что они берут мнение, что часть этого должна произойти на первом показе вместо того, чтобы быть транзакционной частью установки. Инструменты в свободном доступе и документация были ужасны - утончаются ужасные - к лучшему часть десятилетия. Обе из этих проблем в основном решаются проектом WiX и DTF (который позволяет Вам наконец использовать пользовательские действия управляемого кода), который является, почему мы - все настолько благодарные Rob Mensching и работе других над тем проектом.

У меня был тот же опыт. Установка может быстро высосать Ваше время, поскольку Вы спускаетесь по кроличьей норе "О, Боже, я предполагаю, что должен стать экспертом в этом также". Я второй идея, которая это, лучше обращаться к нему вначале в Вашем проекте и сохранять сохраняемым как часть Вашего процесса сборки. Таким образом, можно помочь избежать что сценарий того, что разработали практически неустанавливаемый продукт. (Trac был примером этого некоторое время, требуя для разыскивания определенных версий странных библиотек Python.)

(Я мог продолжить о том, как Windows Installer иногда решает использовать мой медленный, внешний жесткий диск USB в качестве места для распаковки его файлов, как это, кажется, находится, там ничего не делая в течение многих минут подряд на компьютерах, которые имели много установок MSI на них, и как тот индикатор выполнения, сбрасывающий себя огромное количество раз во время единственной установки, является самой идиотичной вещью, которую я когда-либо видел, но я сохраню ту напыщенную речь в течение другого дня.=)

Мои два цента; обратите внимание на то, что я действительно просто знаю достаточно о Windows Installer, чтобы нанести ущерб, но это - моя оценка, прибывающая от разработчика малого бизнеса, просто пытающегося использовать его.Удачи!

4
ответ дан 6 December 2019 в 10:03
поделиться

Лично, я главным образом соглашаюсь с @Conrad и @John Saunders. Я записал об этой теме давным-давно на моем старом блоге. Я думаю, что @jeffamaphone имеет точку о сложности Windows Installer (и мой по вниманию к установке, в целом), но я полагаю, что Windows Installer является все еще лучшим повсюду вокруг опции для установки в Windows.

2
ответ дан 6 December 2019 в 10:03
поделиться

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

Иначе, кто заботится, сколько тяжелой работы Вы сделали кодирование - никто никогда не будет видеть Вашу работу, если это не установит!

Обратите внимание, что это также применяется к XCOPY.

Другая вещь: что тестирует Ваш QA, если они не тестируют то, что устанавливает Ваш установщик? Необходимо протестировать то, что получит клиент!

1
ответ дан 6 December 2019 в 10:03
поделиться

Я использую Installshield и если Вы не пытаетесь сделать что-нибудь, также полагают (я, почему был бы Вы), затем, это довольно просто - установка начальной буквы набора, выберите файлы, настройте ярлыки и создайте setup.exe.

Все будущее обновляет, я обрабатываю в своем коде - намного более удобный для пользователя

0
ответ дан 6 December 2019 в 10:03
поделиться

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

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

0
ответ дан 6 December 2019 в 10:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: