Major Upgrade - .exe файл не переустанавливается - PullRequest
2 голосов
/ 14 февраля 2012

У меня есть MSI-файл, созданный программой MSICREATE и обработанный с использованием orca следующим образом ...

InstallExecuteSequence Table

* added FindRelatedProducts with sequence 410
* added RemoveExistingProducts with sequence 1450

InstallUISequence Table

* added FindRelatedProducts with sequence 200

PropertyTable

* added RemovePreviousVersions TRUE
* added SECURECUSTOMPROPERTIES SOLARUPGRADE
* had a existing UpgradeCode with guid created by MSICREATE
* had a existing ProductVersion 12.2.12.0 created my MSICREATE

Добавлена ​​таблица обновлений

* UpgradeCode same value as Upgrade in Property Table
* VersionMin null
* VersionMax 99.12.31
* Attributes 1
* ActionProperty SOLARUPGRADE (same value as SECURECUSTOMPROPERTIES in Property Table)

Я также назначил новый PackageCode и новый ProductCode, чтобы новые msi имели разные значения PackageCode, ProductCode и ProductVersion, чемранее установленный продукт.

Когда я запускаю этот msi с ранее установленным продуктом, старый продукт удаляется, создается новый каталог программных файлов и все файлы, кроме .exe, переустанавливаются из нового .msi.Восстановление приведет к созданию .exe.Если новая msi установлена ​​ПОСЛЕ удаления старого продукта (с помощью панели управления установкой / удалением программ), будут установлены все файлы, включая .exe.

Файл журнала msiexec - mywebspace.wisc.edu/mdorl/msilog/log3.log

.msi - это mywebspace.wisc.edu/mdorl/msilog/sbl_Major_Upgrade.msi

Единственное, что мне кажется странным, - это следующие строки из журнала.Первый, второй и четвертый файлы устанавливаются, третий - EXE-файл, который не устанавливается. ПРИМЕЧАНИЕ. НА ЭТОМ ВХОДЕ НУЛЕВОЕ ДЕЙСТВИЕ .

Action start 8:04:41: InstallValidate.
MSI (s) (18:F4) [08:04:41:671]: Feature: _MainFeature; Installed: Absent;   Request: Local;   Action: Local
MSI (s) (18:F4) [08:04:41:671]: Component: _24A30964F6B6462282E161248AF15827; Installed: Absent;   Request: Local;   Action: Local
MSI (s) (18:F4) [08:04:41:671]: Component: _7B95B32E33EB4F699B44D53CA5BC22B5; Installed: Absent;   Request: Local;   Action: Local
MSI (s) (18:F4) [08:04:41:671]: Component: _2FBD153583AF40C09EB9920149F7C7B7; Installed: Absent;   Request: Local;   Action: Null
MSI (s) (18:F4) [08:04:41:671]: Component: _38A400D7DB76479CA0EC6D643D5793CD; Installed: Absent;   Request: Local;   Action: Local

Ответы [ 4 ]

1 голос
/ 16 февраля 2012

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

1) Я все еще не совсем понимаю значение файла версий / неверсированных версий.Я предполагаю, что все .exe файлы версионированы.Я предполагаю, что это означает, что такие файлы нуждаются в соответствующих версиях в таблице файлов.

2) Теперь я понимаю, что версия таблицы файлов не требует подключения к ProductVersion.

3) Я использовалнезаконная версия продукта, например2012.02.16.Я переключился на что-то вроде 12.2.16.

4) Я установил .exe VS_VERSION_INFO FILEVERSION в Visual Studio и добавил то же значение в поле Версия таблицы файлов.

Теперь все файлызаменен, когда я делаю серьезное обновление.

1 голос
/ 14 февраля 2012

Ключевой файл используется установщиком Windows для обнаружения компонента, а также его GUID, вот более подробная информация: http://msdn.microsoft.com/en-us/library/windows/desktop/aa370561(v=vs.85).aspx

Как вы и подозревали, установщик Windows также проверяет версию файла, которая, как я полагаю, вы правильно увеличили в новой версии. Вот правила, которым следуют: http://msdn.microsoft.com/en-us/library/windows/desktop/aa368599(v=vs.85).aspx

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

1 голос
/ 14 февраля 2012

Если вы посмотрите в журнале строку 603, вы найдете следующее:

MSI (18:10) [08: 04: 41: 827]: запретить удалениекомпонент: {ADC6C3E9-A0CF-4AFC-9998-7B9449C8EA10}, поскольку существует другой клиент MSI (18:10) [08: 04: 41: 827]: запрещение удаления компонента: {F74907E7-607E-49D1-B613-D63A36ADB020}, поскольку существует другой клиент MSI (18:10) [08: 04: 41: 827]: запрещение удаления компонента: {B1FE4023-E176-42BC-92C3-15B8E50CFBB0}, так как существует другой клиент MSI (s) (18:10) [08: 04: 41: 827]: запрещение удаления компонента: {E6F5DF5D-3460-4B44-8743-48787E68A2C1}, поскольку существует другой клиент

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

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

Кроме того, если вы знаете, что вы использовали одни и те же компоненты в пакетах для других приложений, отредактируйте их, убедившись, что у каждого компонента есть уникальный GUID для каждого пакета.

0 голосов
/ 15 февраля 2012

Записи в таблице файлов ALL не имеют версии. Почему файлы не .exe обрабатываются по-разному и переустанавливаются?

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

Таким образом, это означает, что пользователь не может установить более старую версию продукта, используя серьезное обновление MSI?

Я не вижу решения, если вы хотите сохранить версию меньше в новом пакете. За исключением, конечно, пользовательских действий.

А из чего состоит легальная версия? В одном месте я вижу 255.255.65535, а в другом - 65535.65535.65535.65535

Они оба являются правильными номерами версий. Последнее значение обычно устанавливается на файл, чтобы быть уверенным, что он заменяет любой другой существующий файл с компьютера, то есть его самый высокий номер версии, разрешенный ОС. http://msdn.microsoft.com/en-us/library/windows/desktop/aa368596(v=vs.85).aspx

...