Переход с предыдущей установки Visual Studio на Wix

У меня был старый установщик, который представлял собой базовый проект установки Visual Studio, однако через некоторое время мы поняли, что он далеко не так сложен, как нам нужно. Поэтому я потратил несколько дней на создание замены с помощью WiX.

Теперь моя текущая проблема заключается в обновлении предыдущих установок. Если кто-то установил одну из версий, которая была установлена ​​вместе с проектом VS, возможно ли использовать новый проект WiX? Я пытался установить одинаковые коды обновления, но ничего не изменилось, кажется, что это совершенно новый продукт, и пытается установить его снова.

Является ли это возможным?


person Steven Yates    schedule 26.02.2013    source источник


Ответы (2)


См. раздел справки: Как выполнить серьезное обновление в программе установки

Основные обновления могут выполнять обновления только в том же контексте установки. (На пользователя -> На пользователя или на машину -> На машину). Если ваш VDPROJ был установлен для каждого пользователя случайно, то пользователю придется удалить/переустановить его, чтобы стать Per-Machine.

Ваш новый установщик не обязательно должен иметь тот же UpgradeCode, что и старый установщик, но он должен создать MajorUpgrade, используя UpgradeCode из старого установщика.

person Christopher Painter    schedule 26.02.2013
comment
Как можно реализовать последнее предложение в проекте wix? Какой у него код? - person Dialecticus; 26.02.2013
comment
Прочтите ссылку на тему помощи. (Подсказка: элемент MajorUpgrade) - person Christopher Painter; 26.02.2013
comment
Похоже, что элемент MajorUpgrade работает с таблицей обновлений (созданной с помощью элементов Upgrade). - person Dialecticus; 26.02.2013
comment
Правильный. WiX — это тонкая абстракция (преобразование) над установщиком Windows. Если WI — это реляционная база данных, то WiX — это XML с XSD. Элемент MajorUpgrade — это немного синтаксического сахара, который еще больше упрощает элемент Upgrade и соответствующую последовательность действия RemoveExistingProducts. Базовая схема/SDK установщика Windows является полностью декларативной и полностью документированной. На самом деле в этом нет ничего черного ящика. Он широко открыт и богат метаданными. - person Christopher Painter; 26.02.2013
comment
На машину/на пользователя я запутался, пытаясь понять, почему WiX не удалит (или не обнаружит с помощью UpgradeVersion) предыдущую версию установщика Visual Studio коллеги. - person Sacha K; 22.08.2014
comment
Строго говоря, WiX все равно не удаляет. Установщик Windows делает. WiX просто создает базы данных установщика Windows. Различие теряется для многих новых пользователей WiX, потому что у них нет основного доступа к установщику Windows. - person Christopher Painter; 22.08.2014

Это должно быть возможно, но необходимо правильно настроить несколько вещей. Возможно, то, что вы видите в проекте .vdproj, не совпадает с тем, что написано в установке .msi. Используйте Orca в качестве средства чтения .msi и извлекайте всю необходимую информацию. Код обновления должен быть одинаковым, код продукта должен быть другим, а установочная версия должна быть больше по первому, второму или третьему номеру. Четвертый номер не считается.

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

РЕДАКТИРОВАТЬ: Код обновления не обязательно должен быть таким же, но тогда вам придется выполнить дополнительную работу, надеюсь, как описано в этом статья.

person Dialecticus    schedule 26.02.2013
comment
Проблема была в том, что я не изменил ни первый, ни второй номер сборки. Это была 3.3.1.1, сначала я попытался перейти на 3.3.1.2, но это не сработало. Затем сделал это 3.4.0.0 и валла, он обновился правильно - person Steven Yates; 26.02.2013
comment
Если WiX для вас — непонятный черный ящик, почему вы пытаетесь ответить на этот вопрос? Ваше утверждение, что третье и четвертое числа не учитываются, неверно. Четвертый номер не считается. Также два MSI не обязательно должны иметь один и тот же UpgradeCode. Вы также не упомянули о необходимости записи в таблице обновлений. Здесь нужен старый UpgradeCode. - person Christopher Painter; 26.02.2013