#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. К сожалению, это глючит и сбивает с толку. Итак, вот как вы делаете:
- Новый проект — выберите «Манифест пакета»
- Название проекта — «Имя сохранения этого проекта манифеста указано здесь»
-
В дереве щелкните правой кнопкой мыши «Пакет», затем «Добавить установочный файл» — перейдите к .msi или .exe
ex: C:Users{username}AppDataLocalDownloaded Installations{C7896CDC-45FF-49E1-A23D-68FA13A910A5}QBFC 11.0.msi
-
Отображаемое имя — «Имя, которое будет отображаться в Visual Studio»
ex: QuickBooks Foundation Classes v11.0
- Вкладка Свойств — не требуется, пропустить
-
Системные проверки — нажмите на первый значок «Проверка файла»
-
Свойство для результата — свойство файла из шага # 3, которое вы хотели бы протестировать
ex: Name
- Имя файла для поиска — выберите тот же файл, что и на шаге # 3
-
Запустите поиск в Специальной папке — сопоставьте это с Шагом # 6.2
ex: AppDataFolder
-
Путь — сопоставьте это с шагом # 6.2
ex: LocalDownloaded Installations{C7896CDC-45FF-49E1-A23D-68FA13A910A5}
-
- Вкладка Условия установки
- Тип — ByPassIf
- Свойство — выберите идентификатор из шага # 6.1
- Сравнение — Существует
- Значение — Нет
- Вкладка Коды выхода
- Код выхода — 0
- Результат — Успех
- Сохраните свою работу, затем «Создайте» (CTRL SHIFT B)
- Диалоговое окно результатов сборки — щелкните ссылку «Вывод сборки»
-
Переместить / скопировать всю эту папку в:
[VS2012] C:Program Files (x86)Microsoft SDKsWindowsv8.0ABootstrapperPackages
- Перезапустите Visual Studio, и ваше новое обязательное условие появится в списке!
- Теперь просто выберите его в разделе Свойства проекта -> Опубликовать -> Предварительные требования… и опубликовать
Вот рабочий «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, вы нашли решение, пожалуйста, помогите!