Как добавить QBFC13_0.msm в Clickonce

Кажется, нигде в Интернете не описан пошаговый процесс, как это сделать. Если это упоминается, это очень плохо задокументировано, и я не могу следовать сложному пути, который они предлагают. Я новичок в ClickOnce, мне удалось правильно установить мою программу С# на компьютере пользователя, но, конечно, я получаю «22E88GD7-FB0B-B905-CCA6BD526B52» «класс не зарегистрирован», подразумевая, что я считаю, что QBFC13 не установлен на компьютере пользователя. Мой клиент НЕ хочет отдельной одноразовой установки QBFC с использованием стандартного установщика QB вне ClickOnce, он хочет, чтобы это было частью ClickOnce. Неужели это настолько сложный и плохо документированный процесс? Все поиски в Google и записи stackoverflow, которые я видел, не дают возможности сделать это легко или полностью, чтобы это мог сделать новичок. Помощь!


person user3628274    schedule 01.07.2014    source источник


Ответы (3)


В развертывании clickOnce мы можем добавить необходимые условия. В этом случае, если вы добавите пакет QBFC.exe, он автоматически установится на клиентский компьютер с вашего сервера развертывания. Для добавления QBFC в качестве предварительных условий необходимо добавить C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\Bootstrapper\Packages на сервер развертывания. Существует один XML для преобразования имен. Но простой способ - использовать

Программное обеспечение для создания манифестов Bootstrapper.

Спасибо.

person BOBIN JOSEPH    schedule 10.02.2016

В VS2012 вам необходимо добавить Предпосылки (Свойства проекта --> Публикация --> Предварительные условия...).

Однако по умолчанию QBFC отсутствует в списке, поэтому для создания собственного генератора манифестов Bootstrapper от Microsoft потребуется Microsoft Bootstrapper Manifest Generator. К сожалению, он глючит и сбивает с толку. Итак, вот как вы это делаете:

  1. Новый проект - выберите "Манифест пакета"
  2. Имя проекта — «Здесь идет имя« сохранить »этот проект манифеста»
  3. В дереве щелкните «Пакет», удерживая клавишу «Alt», затем «Добавить установочный файл» — перейдите к .msi или .exe.

    ex: C:\Users\{username}\AppData\Local\Downloaded Installations\{C7896CDC-45FF-49E1-A23D-68FA13A910A5}\QBFC 11.0.msi
    
  4. Отображаемое имя — «Имя, которое будет отображаться в Visual Studio».

    ex: QuickBooks Foundation Classes v11.0
    
  5. Вкладка "Свойства" - не нужна, пропустить
  6. Проверка системы — щелкните первый значок «Проверка файлов».

    1. Свойство для результата — свойство файла из шага № 3, которое вы хотите протестировать.

      ex: Name
      
    2. Имя файла для поиска — выберите тот же файл, что и в шаге №3.
    3. Начать поиск в специальной папке — сопоставьте это с шагом № 6.2.

      ex: AppDataFolder
      
    4. Путь - сопоставьте это с шагом № 6.2

      ex: \Local\Downloaded Installations\{C7896CDC-45FF-49E1-A23D-68FA13A910A5}
      
  7. Install Conditions tab
    1. Type - ByPassIf
    2. Свойство - выберите идентификатор из шага 6.1.
    3. Сравнение - существует
    4. Значение — н/д
  8. Exit Codes tab
    1. Exit Code - 0
    2. Результат - Успех
  9. Сохраните свою работу, затем «Построить» (CTRL+SHIFT+B).
  10. Диалоговое окно «Результаты сборки» — щелкните ссылку «Вывод сборки».
  11. Переместите/скопируйте всю эту папку в:

    [VS2012] C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\Bootstrapper\Packages\
    
  12. Перезапустите Visual Studio, и ваш новый компонент появится в списке!
  13. Теперь просто выберите его в разделе "Свойства проекта" --> "Опубликовать" --> "Предпосылки"... и опубликуйте.

Вот рабочий «product.xml», который я создал для QBFCv11:

<?xml version="1.0" encoding="utf-8"?>
<Product ProductCode="Intuit.QBFCv11" xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper">
  <PackageFiles CopyAllPackageFiles="false">
    <PackageFile Name="qbfc 11.0.msi" PublicKey="3082...0001" />
  </PackageFiles>
  <InstallChecks>
    <FileCheck Property="Name" SpecialFolder="ProgramFilesFolder" SearchPath="Local\Downloaded Installations\{C7896CDC-45FF-49E1-A23D-68FA13A910A5}" FileName="QBFC 11.0.msi" />
  </InstallChecks>
  <Commands Reboot="Defer">
    <Command PackageFile="qbfc 11.0.msi">
      <InstallConditions>
        <BypassIf Property="Name" Compare="ValueExists" Value="N/A for ValueExists and ValueNotExists" />
      </InstallConditions>
      <ExitCodes>
        <ExitCode Value="0" Result="Success" />
        <DefaultExitCode Result="Fail" String="Anunexpectedexitcodewasr" FormatMessageFromSystem="true" />
      </ExitCodes>
    </Command>
  </Commands>
</Product>
person DEXTER360    schedule 20.01.2017

Установка ClickOnce выполняется в контексте текущего пользователя. Если текущий пользователь не является админом, он не может установить ничего, что требует регистрации в среде. Так что то, о чем вы спрашиваете, вероятно, невозможно напрямую.

Что вы можете попытаться сделать, так это установить небольшое вспомогательное приложение вместе с вашим приложением, которое может зарегистрировать ваши компоненты/выполнить установщик и заставить приложение ClickOnce выполнять его с правами администратора, если это возможно. Однако это будет работать только в том случае, если у пользователя действительно есть права администратора на машине.

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

person Thorsten Dittmar    schedule 01.07.2014
comment
Спасибо за ответ, но проблема заключается в том, чтобы заставить процесс публикации вставить файл .msm в предварительные условия. В настоящее время вся документация Microsoft по этому вопросу неверна, не работает или не документирована должным образом. Фактическая установка (нажатие «Настройка» в первый раз или запуск программы после этого) не вызывает проблем с установкой в ​​соответствии с вашим комментарием. - person user3628274; 02.07.2014
comment
Я застрял на том же месте, чтобы добавить QBFC, вы нашли решение, пожалуйста, помогите! - person BOBIN JOSEPH; 03.02.2016