Наш установщик устанавливает IIS Express для запуска облегченного веб-сервера для нашего клиентского приложения, и недавно мы увидели всплывающее предупреждение во время установки на некоторых компьютерах, говорящее, что «более новая версия IIS Express уже установлена».
Тот, который мы включили в наш установщик, является установщиком, который мы можем найти на сайте загрузки Microsoft здесь: https://www.microsoft.com/en-us/download/details.aspx?id=48264 Эта версия отображается как версия 10.0.1741.
На моем (разработчик)) машина, когда я получил предупреждение, у меня была установлена версия 10.0.1743 (у меня VS2015 CE и VS2017 CE на этой машине). У коллеги была установлена версия 10.0.03203 (на его машине установлены VS2015 CE, VS2017 CE и VS2019 CE).
Итак: кто-нибудь знает, где я могу найти последнюю версию установщика IIS Express (я думаю, 10.0. 03203) чтобы я мог включить его в наш установщик?
ОБНОВЛЕНИЕ (20191107) Согласно предложению Лекса Ли, приведенного ниже в комментариях, я действительно мог бы просто проверить, установлен ли IIS Express. Ниже приведен текущий код, который мы используем в нашем установщике InnoSetup, но он все еще устанавливается и показывает предупреждение о наличии более новой версии (поскольку, скорее всего, он проверяет только определенную версию). Есть ли способ проверить, является ли версия чем-то> = 10, а также?
#IFDEF UNICODE
#DEFINE AW "W"
#ELSE
#DEFINE AW "A"
#ENDIF
type
INSTALLSTATE = Longint;
const
INSTALLSTATE_INVALIDARG = -2; // An invalid parameter was passed to the function.
INSTALLSTATE_UNKNOWN = -1; // The product is neither advertised or installed.
INSTALLSTATE_ADVERTISED = 1; // The product is advertised but not installed.
INSTALLSTATE_ABSENT = 2; // The product is installed for a different user.
INSTALLSTATE_DEFAULT = 5; // The product is installed for the current user.
IIS_EXPRESS_10_x64 = '{63E2B575-D6F7-4572-8EA9-3DAC4208AA2A}'; // IIS 10.0 Express
// Checks the install state of a product (given the product ID)
function MsiQueryProductState(szProduct: String): INSTALLSTATE;
external 'MsiQueryProductState{#AW}@msi.dll stdcall';
// Checks if IIS Express is NOT installed (true if NOT installed)
function IISExpressIsNotInstalled: Boolean;
begin
Result := not (MsiQueryProductState(IIS_EXPRESS_10_x64) = INSTALLSTATE_DEFAULT);
end;