Могу ли я заставить MSI делать то, что делает распространяемый исполняемый файл С++?

Наш проект на С# требует для запуска двух вещей на целевом компьютере. Первый — .net 2 или выше, что является справедливым требованием для пользователей. Второй — распространяемый пакет С++. Нам это нужно, потому что мы используем skincrafter. Это немного реже можно найти на целевом компьютере. На данный момент мы развертываем с помощью Visual Studio, и это создает файл setup.exe, который гарантирует, что и .net, и распространяемый пакет C++ будут установлены на целевую машину.

Наша проблема возникает, когда сетевые администраторы хотят распространять программу по своей сети. Они берут только msi, а не setup.exe. Это означает, что когда компьютер в сети пытается установить программу, а на его машине нет распространяемого пакета С++, программа работает неправильно.

Из того, что я прочитал, кажется, что распространяемый пакет просто помещает некоторые DLL на компьютер. Если это так, я могу просто включить эти DLL в MSI и убедиться, что они установлены на целевой машине. Или это не так просто?


person Septih    schedule 23.02.2010    source источник


Ответы (1)


Да, вы можете добавить распространяемые файлы C++ в MSI. С dll в MSI у вас есть возможность зарегистрировать dll на целевой машине. Так что вы тоже можете это сделать.

person Kangkan    schedule 23.02.2010
comment
Спасибо. Я думаю, что dll, которые мне нужно включить, это gdiplus.dll, mfc90.dll, msvcr90.dll, Microsoft.VC90.MFC.manifest, Microsoft.VC90.CRT.manifest. Просто нужно найти их сейчас. Вы упомянули о регистрации dll, должен ли я устанавливать Register/System/SharedLegacyFile или постоянный, или любую их комбинацию? Имеет ли значение, что это предварительно скомпилированная dll, которая вызывает dll c++? - person Septih; 23.02.2010
comment
Установите соответствующее значение для регистра. и Жизненно важные = истина. Это приведет к регистрации dll на целевой машине, и в случае сбоя произойдет откат установки. - person Kangkan; 23.02.2010