2015-05-19 4 views
0

Это программа установки базы данных SQL. Это действительно ничего не меняет на локальном компьютере, но подключается к базе данных для внесения изменений.Как я могу сделать установщик Windows (WiX) всегда думать, что он запускает обновление или новую установку?

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

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

Я поставил тэг MajorUpgrade, как так, что документация говорит обложка «AllowSameVersionUpgrades»

<MajorUpgrade AllowDowngrades="yes" /> 

Я попытался изменить диалоги кнопку «Next», как так. NewDBDlg - это настраиваемый экран.

<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="NewDBDlg">1</Publish> 
<Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="NewDBDlg">1</Publish> 

Этот вид работ, но он получает до последнего экрана «VerifyReadyDlg» и это в основном пустой только кнопки «Назад» и «Отмена».

Я направляюсь в правильном направлении или должен попробовать что-то еще, например удалить установку как часть установки?

ответ

6

Иногда мне нужно создать .MSI, который на самом деле не является традиционным установщиком. Это скорее утилита, чем установленное приложение. Microsoft иногда делает это с помощью Microsoft Fix it series of utilities.

Это необычный сценарий, но может быть сделано путем подавления определенных установщика Windows стандартные действия:

<InstallExecuteSequence> 
    <RegisterProduct Suppress="yes" /> 
    <PublishFeatures Suppress="yes" /> 
    <PublishProduct Suppress="yes" /> 
</InstallExecuteSequence> 

Поскольку продукт никогда не зарегистрирован в службе инсталлятора нет никакого ремонта, удаления, обновления, обслуживания и т.д. на.

+0

Спасибо! Работает чудесно. – sean

+0

Чтобы скачать образец исправления, перейдите по ссылке: http://go.microsoft.com/?linkid=9850239 _Вы, вероятно, не хотите запускать его! _ –

1

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

Если вы хотите использовать элемент MajorUpgrade и приумножить ProductVersion (и изменить ProductCode) для каждой сборки MSI, тогда основное обновление должно работать. Каждая установка будет полной новой установкой, но если старый продукт окажется там, он удалит его. Тогда в программе & у вас будет только одна рука. В противном случае решение Криса хорошее.

На самом деле это не похоже на то, для чего был создан установщик Windows.

+0

Да, я согласен, это, вероятно, было бы лучше построено как утилита , Сначала это казалось легким путем. Его часть установки, похоже, наши другие инсталляторы ... – sean

+0

Я согласен, что это несколько подрывно, а не для неосведомленных. Тем не менее, я видел, как MSFT это делает, и, похоже, нет никаких запретов или тестов ICE, чтобы бросить им вызов. Вы получаете много преимуществ, которые MSI делает именно так. Тем не менее, я бы назвал это только сделать это, если вы знаете, что делаете, и пользовательская утилита для выполнения SQL-скриптов, вероятно, будет лучше. –