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

#c# #clickonce #qbfc

#c# #clickonce #qbfc

Вопрос:

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

Ответ №1:

В развертывании ClickOnce мы можем добавить предварительные требования. В том, что если вы добавите QBFC.exe затем пакет автоматически установится на клиентский компьютер с вашего сервера развертывания. Для добавления QBFC в качестве предварительных условий его следует добавить C:Program Files (x86)Microsoft SDKsWindowsv8.0ABootstrapperPackages на сервере развертывания. Существует один XML для преобразования имен. Но простой способ — использовать

Программное обеспечение для генерации манифеста начальной загрузки.

Спасибо.

Ответ №2:

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

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

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

     ex: C:Users{username}AppDataLocalDownloaded 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: LocalDownloaded Installations{C7896CDC-45FF-49E1-A23D-68FA13A910A5}
        
  7. Вкладка Условия установки
    1. Тип — ByPassIf
    2. Свойство — выберите идентификатор из шага # 6.1
    3. Сравнение — Существует
    4. Значение — Нет
  8. Вкладка Коды выхода
    1. Код выхода — 0
    2. Результат — Успех
  9. Сохраните свою работу, затем «Создайте» (CTRL SHIFT B)
  10. Диалоговое окно результатов сборки — щелкните ссылку «Вывод сборки»
  11. Переместить / скопировать всю эту папку в:

     [VS2012] C:Program Files (x86)Microsoft SDKsWindowsv8.0ABootstrapperPackages
      
  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="LocalDownloaded 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>
  

Ответ №3:

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

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

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

Комментарии:

1. Спасибо за ответ, но проблема заключается в том, чтобы заставить процесс «Опубликовать» вставить файл .msm в Предварительные условия. В настоящее время вся документация Microsoft по этому вопросу неверна, или не работает, или не задокументирована должным образом. Фактическая установка (нажатие на Setup в первый раз или запуск программы после этого) не вызывает проблем с установкой в соответствии с вашим комментарием.

2. Я застрял в том же месте, чтобы добавить QBFC, вы нашли решение, пожалуйста, помогите!