Ich habe eine Konfigurationsdatei, die auf einer pro-Server-Basis geändert werden muss, so dass die Konfigurationsdatei für ein Client-Installationsprogramm eingerichtet wird, um mit dem Server dieses Servers übereinzustimmen, sobald ein Server unsere Software installiert hat Einstellungen, und dann zur Bereitstellung in einen öffentlichen Ordner im Web kopiert.Mage.exe-Bereitstellungsprobleme
Da ich die Konfigurationsdatei ändere, muss ich auch die * .manifest- und * .application-Dateien neu erstellen, und meine einzige wirkliche Option dafür ist die Verwendung von Mage.exe aus dem Win7-SDK . Um die Datei * .manifest mit dem richtigen Hash aus der geänderten Konfigurationsdatei zu reparieren, führe ich Folgendes aus:
mage -new Anwendung -fd ". \ Anwendungsdateien \ < appName> _1_0_0_0" -ToFile ". \ Anwendungsdateien \ _1_0_0_0 \ < appName> exe.manifest“-Name "< appName>" -Version "1.0.0.0" -CertFile "key.pfx" -password "< Passwort>"
und dann zu fixieren, die * .application file mit dem richtigen Hash aus der modifizierten * .manifest-Datei, ich starte:
mage -neu Bereitstellung -I t -t "< appName> .application" -v "1.0.0.0" -appManifest ". \ Anwendungsdateien \ < appName> _1_0_0_0 \ < appName> exe.manifest "-pu "http: // < Hostaddress>/< path>/Anwendungsdateien/< appName> _1_0_0_0/< appName> exe.manifest" -CertFile" key.pfx "-password" "
Jetzt funktioniert das alles, und ich bekomme die Nachricht, dass die Dateien erfolgreich signiert wurden. Wenn ich versuche, obwohl die Client-Anwendung zu installieren, es ist offensichtlich, dass etwas schief gegangen ist, wenn ich ein Fehlerprotokoll mit der Meldung:
+ Deployment manifest is not semantically valid.
+ Deployment manifest requires <deployment> section.
an der * .application Datei In sucht, hat es einige zusätzliche Informationen unter dem "Deployment" Knoten, der die gleiche Datei direkt aus dem veröffentlichen Feature von VS2008 nicht hat:
<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>
die VS2008-Version veröffentlichen hat einfach:
<deployment install="true" />
Wenn Ich entferne die zusätzlichen Informationen und setze den Deployment-Node auf einen selbst terminierenden Node, dann signiere ich die Datei neu, alles funktioniert wie erwartet.
Ist dies ein bekanntes Problem und gibt es eine Möglichkeit, Mage dazu zu bringen, die Datei ohne die zusätzlichen Informationen im Bereitstellungsknoten zu erstellen, damit sie ordnungsgemäß funktioniert?
BEARBEITEN: Als temporäre Lösung lade ich die Dateien in ein XmlDocument und modifiziere sie entsprechend, um dann die Dateien neu zu signieren. Außerdem stehe ich jetzt vor dem Problem, dass ich noch nicht feststellen kann, wie ein Symbol zur Bereitstellung hinzugefügt wird, sodass der Startmenüeintrag ein anderes Symbol als das allgemeine Symbol erhält.
Ich habe einen sehr ähnlichen Anwendungsfall mit ähnlichen Problemen habe. Ich werde antworten, wenn ich eine Lösung finde. –
benutze einfach die -appc-Flagge auf Magier –
Nathan, überprüfe meine Antwort und schau, ob es dir hilft. Die Verwendung von Mage.exe sollte für Sie gut funktionieren. –