2013-07-25 23 views
0

Мне нужно, чтобы мой установщик нашел что-то ранее установленное, оно удалит все перед повторной установкой. До сих пор у меня есть этот код:Не переустанавливать последнюю версию WiX

<Product Id="GUID1" Name="MyName" Language="1033" 
    Version="1.0.0.0" Manufacturer="MyManufacturer" UpgradeCode="GUID2"> 
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" /> 

    <InstallExecuteSequence> 
    <RemoveExistingProducts Before="InstallInitialize" /> 
    </InstallExecuteSequence> 

    <Feature Id="ProductFeature" Title="MyTitle" Level="1"> 
    <ComponentGroupRef Id="MyFeatures" /> 
    </Feature> 
</Product> 

Но когда я запустить программу установки я получаю это сообщение: Существует еще одна versino этого продукта установлен. Эта установка не может продолжаться. (или что-то вроде этого, мои окна не на английском).

Как это исправить?

ответ

1

Если вы хотите, вы можете использовать код обновления и управления версиями системы, чтобы сделать это:

<Product Id="*" 
     Name="MyApp" 
     Language="1033" 
     Version="1.0.0" 
     Manufacturer="Me" 
     UpgradeCode="bf35a656-3e28-4f40-9ebd-566174c9c948"> 

     <MajorUpgrade Schedule="afterInstallInitialize" DowngradeErrorMessage="A later version of MyApp is already installed. Setup will now exit."/> 

     <!-- other stuff --> 
    </Product> 

Ключ всегда держать код продукта на «*» и «UpgradeCode» константа. Это будет сделано так, что при изменении версии до версии 1.0.1 она удалит все предыдущие версии. Однако, если пользователь пытается установить более старую версию, когда у него уже есть более новая версия, она не позволит ему (если они сначала не удаляются вручную).

Отказ от ответственности: Та же версия не инициирует обновление. Также изменение 4-го числа (1.0.0. *) Также не приведет к обновлению. Он отлично работает с 3-х версиями. Чтобы иметь четырех версионное число, я бы рассмотрел разработку загрузчика (setup.exe) для программного обеспечения.

+0

Это неправда. Когда я меняю версию '1.0.0.0' на' 1.0.0.0', вместо этого удаляю предыдущую и устанавливаю новую, msi создает новую установку. Итак, теперь у меня есть две установки моей программы на одном компьютере. Но если я изменил версию '1.0.0.0' на' 1.0.1.0', теперь все отлично. Значит, вы знаете, как сделать работу с четырьмя версиями? –

+2

@JonnyPiazzi Установщик Windows определяет схему управления версиями для пакетов установщика Windows. Зачем пытаться использовать версию с четырьмя номерами, когда [docs] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa370859 (v = vs.85) .aspx) четко говорят, что формат "major.minor.build" с ограничениями по диапазону для каждого? –

+0

@Tom Blodget Я работаю над проектом, который ранее был определен, что версия: 'major.minor.error-correct.build', но я показал этот документ, который вы опубликовали, и методология будет изменена. Благодарю. –