2014-01-28 3 views
0

Я хотел бы создать пакет установщика для установки COM-компонентов без регистрации (с включенными файлами манифеста). Это будет более или менее самораспаковывающийся архив, чтобы поместить некоторые файлы в целевой каталог, заданный как аргумент командной строки, но ему также нужно будет проверить или установить некоторые другие распространенные компоненты, такие как VC++ или DirectX.Как создать установщик без регистрации с WiX (на основе манифеста)

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

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

+0

Честно говоря, за 11 лет с момента выхода RegFree COM у меня никогда не было ни одного проекта, который использовал его. Сбор метаданных COM из DLL и создание их в MSI очень прост, надёжен и изящен. RegFree COM - это решение проблемы, которая не существует ИМО. Сначала я бы сосредоточился на устранении COM, а затем сделал его еще более сложным. –

ответ

1

В этом одном вопросе у вас есть десяток разных вопросов. Начните с создания простого MSI, который успешно устанавливает ваши файлы и ваш манифест. Создайте COM-клиент, чтобы проверить его. Вы также можете поместить AppSearch и LaunchConditions в свой MSI для обнаружения ваших зависимостей и не разрешать установку, если они отсутствуют.

Это все, что вам нужно сделать для этого простого вопроса. Что касается других вопросов .... если вы являетесь распространяемым, а кто-то еще тихо устанавливает вас, тогда это их задача - обрабатывать установку других распространяемых ресурсов. Также, если они не хотят, чтобы вы указали в «Программы и функции», они могут передать ARPSYSTEMCOMPONENT = 1 вашему установщику, и вы не будете перечислены. Если они хотят удалить вас, когда они деинсталлируют себя, это их проблема не ваша.

+0

У меня нет проблем с COM. Мой вопрос касается процесса установки. Я собираюсь изучить свойство ARPSYSTEMCOMPONENT. Мне просто интересно, как установщик приложения знает, что удалить, если мой установщик не поддерживает его собственную деинсталляцию. – fschoenm

+1

ARPSYSTEMCOMPONENT не мешает вашему установщику удалить, он просто запрещает его перечислять в ARP. Функция msiexec/x все еще существует. Ожидается, что родительский продукт, который установил вас, будет иметь процедуру удаления, которая при необходимости удалит вашу деинсталляцию. (Например, см. Загрузочные буферы WiX) –

0

Если вы действительно создаете распространяемый для использования другими продуктами, иногда подходящим решением является модуль слияния. Они создают файлы MSI и включают ваш модуль слияния.

В противном случае бесплатный COM-модуль теоретически прост в установке, потому что вы просто устанавливаете файлы манифеста и Dll и т. Д. Однако я не понимаю, как это можно использовать другими приложениями, потому что (IIRC) клиентское приложение exe нужен ваш манифест и Dll в папке установки, так как они могут это сделать, когда они еще не установлены? Или даже если они установлены, как вы можете их найти? Таким образом, это восходит к идее модуля слияния, поэтому они включают ваш модуль слияния и установку exe, вашего манифеста и вашей Dll в том же месте. Когда они удаляются, делайте свои файлы.

+0

Я не понимаю вопроса. Они просто извлекают ваш файл манифеста и библиотеки DLL в свой каталог программ и ссылаются на ваш манифест в своем собственном. – fschoenm

+0

Возможно, я не понял ваш план правильно, но «извлечь в их каталог программы» кажется странным. У вас есть zip-файл? Или они запускают вашу настройку и как-то направляют ее на установку в свою папку приложений, а затем их приложение запускается и использует ваши файлы? Поэтому они сначала устанавливают свое приложение, а потом ваше? Трудно сказать, какой может быть лучший подход, не зная реальных шагов в планируемом процессе развертывания. – PhilDW

+0

Ну, вот как работает COM Regfree: они помещают COM-компоненты в папку своего приложения, а не устанавливают их глобально. Вот почему я написал переиздание. установщик будет более или менее самораспаковывающимся архивом. – fschoenm

Смежные вопросы