Кажется, нигде в Интернете не описан пошаговый процесс, как это сделать. Если это упоминается, это очень плохо задокументировано, и я не могу следовать сложному пути, который они предлагают. Я новичок в ClickOnce, мне удалось правильно установить мою программу С# на компьютере пользователя, но, конечно, я получаю «22E88GD7-FB0B-B905-CCA6BD526B52» «класс не зарегистрирован», подразумевая, что я считаю, что QBFC13 не установлен на компьютере пользователя. Мой клиент НЕ хочет отдельной одноразовой установки QBFC с использованием стандартного установщика QB вне ClickOnce, он хочет, чтобы это было частью ClickOnce. Неужели это настолько сложный и плохо документированный процесс? Все поиски в Google и записи stackoverflow, которые я видел, не дают возможности сделать это легко или полностью, чтобы это мог сделать новичок. Помощь!
Как добавить QBFC13_0.msm в Clickonce
Ответы (3)
В развертывании clickOnce мы можем добавить необходимые условия. В этом случае, если вы добавите пакет QBFC.exe, он автоматически установится на клиентский компьютер с вашего сервера развертывания. Для добавления QBFC в качестве предварительных условий необходимо добавить C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\Bootstrapper\Packages
на сервер развертывания. Существует один XML для преобразования имен. Но простой способ - использовать
Программное обеспечение для создания манифестов Bootstrapper.
Спасибо.
В VS2012 вам необходимо добавить Предпосылки (Свойства проекта --> Публикация --> Предварительные условия...).
Однако по умолчанию QBFC отсутствует в списке, поэтому для создания собственного генератора манифестов Bootstrapper от Microsoft потребуется Microsoft Bootstrapper Manifest Generator. К сожалению, он глючит и сбивает с толку. Итак, вот как вы это делаете:
- Новый проект - выберите "Манифест пакета"
- Имя проекта — «Здесь идет имя« сохранить »этот проект манифеста»
В дереве щелкните «Пакет», удерживая клавишу «Alt», затем «Добавить установочный файл» — перейдите к .msi или .exe.
ex: C:\Users\{username}\AppData\Local\Downloaded 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: \Local\Downloaded Installations\{C7896CDC-45FF-49E1-A23D-68FA13A910A5}
- Install Conditions tab
- Type - ByPassIf
- Свойство - выберите идентификатор из шага 6.1.
- Сравнение - существует
- Значение — н/д
- Exit Codes tab
- Exit Code - 0
- Результат - Успех
- Сохраните свою работу, затем «Построить» (CTRL+SHIFT+B).
- Диалоговое окно «Результаты сборки» — щелкните ссылку «Вывод сборки».
Переместите/скопируйте всю эту папку в:
[VS2012] C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\Bootstrapper\Packages\
- Перезапустите 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="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>
Установка ClickOnce выполняется в контексте текущего пользователя. Если текущий пользователь не является админом, он не может установить ничего, что требует регистрации в среде. Так что то, о чем вы спрашиваете, вероятно, невозможно напрямую.
Что вы можете попытаться сделать, так это установить небольшое вспомогательное приложение вместе с вашим приложением, которое может зарегистрировать ваши компоненты/выполнить установщик и заставить приложение ClickOnce выполнять его с правами администратора, если это возможно. Однако это будет работать только в том случае, если у пользователя действительно есть права администратора на машине.
Даже если у вас есть необходимые компоненты, установленные до установки ClickOnce, администратору придется выполнить их до того, как это сможет сделать любой пользователь на компьютере.