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

StackOverflow https://stackoverflow.com/questions/3789882

Вопрос

У нас есть MSI, который мы создали в Wix 3.5.2030.0 и нацеливанию установщика Windows 4.0 (для MSIUSEREALADMINDETECTION служба поддержки). У нас есть свойство, которое мы определили в MSI, чтобы обеспечить использование Bootstrapper (я говорю «обеспечить», но это действительно «очень сильно поощряет», конечно):

<Property Id="SETUPEXE"
          Secure="yes" />
<Condition Message="You must run the MSI through the setup program; you cannot run it directly.">
  SETUPEXE = 1
</Condition>

Когда мы запускаем доставку MSI как новую установку, все работает. Однако, когда мы запускаем его как обновление, имущество, передаваемое на установщик, кажется, «потерян» в какой-то момент. Журнал показывает следующие соответствующие записи:

MSI (s) (2C:8C) [11:27:41:648]: Command Line: SETUPEXE=1 <other properties>

MSI (s) (2C:8C) [11:27:43:055]: PROPERTY CHANGE: Adding SETUPEXE property. Its value is '1'.

MSI (s) (2C:CC) [11:28:11:038]: PROPERTY CHANGE: Adding NETFRAMEWORK20INSTALLROOTDIR property. Its value is 'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\'.
Action ended 11:28:11: AppSearch. Return value 1.
MSI (s) (2C:CC) [11:28:11:147]: Doing action: LaunchConditions
Action start 11:28:11: LaunchConditions.
MSI (s) (2C:CC) [11:28:33:662]: Product: <product> -- You must run the MSI through the setup program; you cannot run it directly.

Action ended 11:28:33: LaunchConditions. Return value 3.
Action ended 11:28:33: INSTALL. Return value 3.

Property(N): SETUPEXE = 0

Property(N): SecureCustomProperties = NETFRAMEWORK20INSTALLROOTDIR;NETFRAMEWORK35;NETFRAMEWORK35_SP_LEVEL;NEWERVERSIONDETECTED;OLDERVERSIONBEINGUPGRADED;SETUPEXE

Property(S): SecureCustomProperties = NETFRAMEWORK20INSTALLROOTDIR;NETFRAMEWORK35;NETFRAMEWORK35_SP_LEVEL;NEWERVERSIONDETECTED;OLDERVERSIONBEINGUPGRADED;SETUPEXE

Property(S): SETUPEXE = 1

Я сделал несколько поисков на это и посмотрел на войти WiLogUtl и по крайней мере выяснили, что Property(N) указывает на «вложенное» свойство, но я не знаю, что такое гнездование, когда я использую MSI напрямую через msiexec. Отказ Затем я не знаю, почему вложенное свойство не устанавливается правильно, когда клиентские значения и значения сервера верны. Как мне это решить?

Это было полезно?

Решение

Я бы рассмотрел изменение этого условия (или аналогично в зависимости от вашего случая использования)

<Condition Message="Blah blah blah">SETUPEXE or Installed</Condition> 

Я делаю подобное (setupseup installshields.exe передает свойство setupexedir по умолчанию), и это не ужасно, если вы хотите убедиться, что ваш установщик пробежал через Bootstrapper, чтобы убедиться, что PrEEQS имел возможность установки. Но для технического обслуживания / ремонта / удаления сценариев вы, вероятно, не хотите, чтобы быть запущенным Setup.exe.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top