У меня есть файл конфигурации, который необходимо изменить для каждого сервера, поэтому, как только на сервере установлено наше программное обеспечение, файл конфигурации для установщика клиента настраивается в соответствии с конкретными настройками этого сервера, а затем копируется в общедоступный папку в Интернете для развертывания.
Поскольку я меняю файл конфигурации, мне также нужно пересобрать файлы *.manifest и *.application, и, насколько я понимаю, мой единственный реальный вариант для этого - использовать Mage.exe из Win7 SDK. Чтобы исправить файл *.manifest с правильным хешем из измененного файла конфигурации, я запускаю:
mage -new Application -fd ".\Application Files\<appName>0_0_0" -ToFile ".\Application Files\+ Deployment manifest is not semantically valid. + Deployment manifest requires <deployment> section.
0_0_0\<appName>.exe.manifest" -Name "<appName>" -Version "1.0.0.0" -CertFile "key.pfx" -password "<password>"+ Deployment manifest is not semantically valid. + Deployment manifest requires <deployment> section.
а затем, чтобы исправить файл *.application с правильным хешем из измененного файла *.manifest, я запускаю:
mage -new Deployment -I t -t "<appName>.application" -v "1.0.0.0" -appManifest ".\Application Files\<appName>0_0_0\<appName>.exe.manifest" -pu "http://<hostaddress>/<path>/Application Files/<appName>+ Deployment manifest is not semantically valid. + Deployment manifest requires <deployment> section.
0_0_0/<appName>.exe.manifest" -CertFile "key.pfx" -password ""+ Deployment manifest is not semantically valid. + Deployment manifest requires <deployment> section.
Теперь все это работает, и я получаю сообщение о том, что файлы были успешно подписаны. Когда я пытаюсь установить клиентское приложение, очевидно, что что-то пошло не так, когда я получаю журнал ошибок с сообщением:
+ Deployment manifest is not semantically valid.
+ Deployment manifest requires <deployment> section.
При просмотре файла *.application в узле «развертывание» есть дополнительная информация, которой нет в том же файле непосредственно из функции публикации VS2008:
<deployment install="true">
<subscription>
<update>
<expiration maximumAge="0" unit="days" />
</update>
</subscription>
<deploymentProvider codebase="http://<hostaddress>/<path>/Application Files/<appName>_1_0_0_0/<appName>.exe.manifest" />
</deployment>
Опубликованная версия VS2008 просто имеет:
<deployment install="true" />
Когда я удаляю дополнительную информацию и устанавливаю узел развертывания на самозавершающийся узел, а затем повторно подписываю файл, все работает, как и ожидалось.
Это известная проблема и есть ли способ заставить Mage создать файл без дополнительной информации в узле развертывания, чтобы он работал правильно?
РЕДАКТИРОВАТЬ: В качестве временного решения я загружаю файлы в XmlDocument и изменяю их в соответствии с требованиями, а затем повторно подписываю файлы. Кроме того, теперь я столкнулся с проблемой, что пока не могу определить, как добавить значок в развертывание, поэтому элемент меню «Пуск» получает значок, отличный от общего значка.