.NET-развертывание Office 2003 распространяемых первичных сборок взаимодействия (o2003pia.msi) - PullRequest
3 голосов
/ 27 марта 2009

Удалось ли кому-нибудь создать пререквизит для o2003.msi?

Есть много людей, которые спрашивают об этом, но я не могу найти никого, кто действительно преуспел. Я нахожу несколько чрезвычайно сложных решений, когда вам необходимо заполнить .cpp-файлы, для которых может или не может быть предоставлен soure. Я даже пытался выполнить одно из них, но получил ошибку конфигурации на целевой машине ...: - (

Если я не установлю o2003.msi, моя «Общая надстройка» для Office выдаст исключение, поскольку файл office.dll не найден. Поэтому я бы очень хотел, чтобы он был включен в мой установщик.

И второй вопрос, независимо от результатов предыдущего: как насчет машины с Office 2007? 02203.msi жалуется, что Office 2003 не установлен, поэтому мне кажется, что мне нужно сделать много вещей, чтобы создать работающий установщик для «Совместно используемой надстройки Office» ... любой другой, проходящий то же самое кошмар?

Обновление: Похоже, что это PIA для Office.Core / "office.dll", которая действительно полезна для машины трагеджа. Ни одно из «сложных» решений (которые, как я знаю, я смогу получить, если приложу к этому определенные усилия) не говорит о том, как обнаружить этот конкретный файл, просто PIA для Word & Excel и некоторые другие. Похоже, они все равно на месте. Это office.dll, который является важным файлом для проверки и установки o2003pia.msi, если он не установлен должным образом!

Ответы [ 3 ]

2 голосов
/ 02 апреля 2009

Возможно, это слишком поздно, но вот решение, которое я сделал для установки надстроек Office 2003 и 2007 нашей компании с использованием небольшого количества кода на C #. Может быть, это может сработать для вас.

Я использую коды продуктов для установок o2003pia и o2007pia:

2003: {91490409-6000-11D3-8CFE-0150048383C9}

2007: {50120000-1105-0000-0000-0000000FF1CE}

Затем, вызвав MSI API, вы можете получить состояние установки для каждого. Вот пример нахождения 2003:

[DllImport("msi.dll")]
    private static extern MsiInstallState MsiQueryProductState
        (string productGuid);
    [DllImport("msi.dll")]
    private static extern uint MsiGetProductInfo
        (string productGuid, string propertyName, StringBuilder valueBuffer, ref Int32 bufferSize);

    bool IsPia2003Installed()
    {
        MsiInstallState state = MsiQueryProductState("{91490409-6000-11D3-8CFE-0150048383C9}");

        return (state == MsiInstallState.msiInstallStateDefault);
    }

Если вы пытаетесь выполнить все это полностью внутри проекта установки (я полагаю, вы используете Visual Studio?), Тогда вы можете добавить условие запуска «Поиск установщика Windows», которое проверяет упомянутые выше коды продуктов. Если он удовлетворен, вы можете запустить специальное действие, которое устанавливает PIA.

Для получения дополнительной информации об этом решении я бы предложил начать здесь здесь .

1 голос
/ 02 июня 2009

Не знаю почему, но я посмотрел на O2003PIA.MSI и O2007PIA.MSI и получил следующие коды продуктов:

O2003PIAProductCode = "{90409419-0006-3D11-C8EF-10054038389C}"

O2007PIAProductCode = "{00002105-5011-0000-0000-000000F01FEC}"

0 голосов
/ 31 марта 2009

Нет ответа? Ну, это не имеет значения , что много - так как и 02003pia.msi, и o2007pia.msi можно устанавливать несколько раз, не жалуясь, не так важно проверить, установлена ​​ли она уже.

...