Hallo Gemeinde,
ich habe eine kleine Anwendung fertiggestellt und versuche sie nun mit einem erstellten Setup auf einem anderen Rechner zu installieren.
Dabei sind folgende zwei Rechner im Spiel:
Rechner 1: Win10, 64-bit, Visual Studio 2017 v15.7.6
Rechner 2: Win7, 32-bit, Visual Studio 2017 v15.7.1
Programmiert habe ich diese Winforms Anwendung im Framework 7.6.1 .
Hier im Forum habe ich gelernt das zwei Änderungen in dem Manifest und der App.config die Darstellungs Qualität verbessern.
In der App.config
und im App.manifest
Klappt gut und ist empfehlenswert. Ich habe es auf meinem Rechner 1 wie folgt in dem originalen von VS erstelltem Manifest eingebaut:
Spoiler anzeigen
Zeilen 21 bis 25. Sieht zwar, für meine schmalen XML Kenntnisse, seltsam aus, da es nun zwei Application Blöcke gibt, aber was solls, es läuft ja.
Witzigerweise stehen auskommentiert in den Zeilen 48 bis 52 original die gleichen Befehle als Vorschlag.
Und nun kommen wir auch endlich zu meinem Problemchen:
Ich habe auf meinem Rechner 1 mit Veröffentlichen ein Installations Setup erstellt. Bei der Installation auf meinem Rechner 2 bekomme ich die Meldung das die Anwendung falsch formatiert ist. Und im Detail wird gesagt das Manifest ist fehlerhaft oder kann nicht geöffnet werden.
Wie erwähnt kann man sehen das der "neue" zweite Application Block vor dem Beginn des Compatibility Blocks steht.
Jetzt habe ich diesen "neuen" Block in den vorhandenen Application Block, der in dem vorhandenen Compatibillity Block steht gelegt...
Also so:
Spoiler anzeigen
Zeile 36 bis 42. Ok, nun also zwei verschachtelte Application Blöcke.
Erstelle ich nun so ein Setup mit meinem Rechner 1, dann kann ich es problemlos auf meinem Rechner 2 installieren.
Dummerweise läuft es dann aber nicht mehr auf meinem Rechner 1 wie vorher. Diese Befehle werden offenbar ignoriert. Das Programm läuft zwar, aber die Darstellung sieht wieder scheixxe aus.
Was nun tun???
Heisst es das ich nun zwei Versionen brauche??? Und was kommt noch auf mich zu beim Testen auf meinem Rechner 2?
Hat da jemand Erfahrungen mit?
ich habe eine kleine Anwendung fertiggestellt und versuche sie nun mit einem erstellten Setup auf einem anderen Rechner zu installieren.
Dabei sind folgende zwei Rechner im Spiel:
Rechner 1: Win10, 64-bit, Visual Studio 2017 v15.7.6
Rechner 2: Win7, 32-bit, Visual Studio 2017 v15.7.1
Programmiert habe ich diese Winforms Anwendung im Framework 7.6.1 .
Hier im Forum habe ich gelernt das zwei Änderungen in dem Manifest und der App.config die Darstellungs Qualität verbessern.
In der App.config
und im App.manifest
Klappt gut und ist empfehlenswert. Ich habe es auf meinem Rechner 1 wie folgt in dem originalen von VS erstelltem Manifest eingebaut:
,
,
XML-Quellcode
- <?xml version="1.0" encoding="utf-8"?>
- <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
- <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
- <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
- <security>
- <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
- <!-- UAC-Manifestoptionen
- Wenn Sie die Ebene der Benutzerkontensteuerung für Windows ändern möchten, ersetzen Sie den
- Knoten "requestedExecutionLevel" wie folgt.
- <requestedExecutionLevel level="asInvoker" uiAccess="false" />
- <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
- <requestedExecutionLevel level="highestAvailable" uiAccess="false" />
- Durch Angabe des Elements "requestedExecutionLevel" wird die Datei- und Registrierungsvirtualisierung deaktiviert.
- Entfernen Sie dieses Element, wenn diese Virtualisierung aus Gründen der Abwärtskompatibilität
- für die Anwendung erforderlich ist.
- -->
- <requestedExecutionLevel level="asInvoker" uiAccess="false" />
- </requestedPrivileges>
- </security>
- </trustInfo>
- <application xmlns="urn:schemas-microsoft-com:asm.v3">
- <windowsSettings>
- <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
- </windowsSettings>
- </application>
- <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
- <application>
- <!-- Eine Liste der Windows-Versionen, unter denen diese Anwendung getestet
- und für die sie entwickelt wurde. Wenn Sie die Auskommentierung der entsprechenden Elemente aufheben,
- wird von Windows automatisch die kompatibelste Umgebung ausgewählt. -->
- <!-- Windows Vista -->
- <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
- <!-- Windows 7 -->
- <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
- <!-- Windows 8 -->
- <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
- <!-- Windows 8.1 -->
- <!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
- <!-- Windows 10 -->
- <!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
- </application>
- </compatibility>
- <!-- Gibt an, dass die Anwendung mit DPI-Werten kompatibel ist und von Windows nicht automatisch auf höhere
- DPI-Werte skaliert wird. WPF-Anwendungen (Windows Presentation Foundation) sind automatisch mit DPI-Werten kompatibel und müssen sich nicht
- anmelden. Für Windows Forms-Anwendungen für .NET Framework 4.6, die sich für diese Einstellung anmelden, muss
- auch die Einstellung "'EnableWindowsFormsHighDpiAutoResizing" in der "app.config" auf "true" festgelegt werden. -->
- <!--
- <application xmlns="urn:schemas-microsoft-com:asm.v3">
- <windowsSettings>
- <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
- </windowsSettings>
- </application>
- -->
- <!-- Designs für allgemeine Windows-Steuerelemente und -Dialogfelder (Windows XP und höher) aktivieren -->
- <!--
- <dependency>
- <dependentAssembly>
- <assemblyIdentity
- type="win32"
- name="Microsoft.Windows.Common-Controls"
- version="6.0.0.0"
- processorArchitecture="*"
- publicKeyToken="6595b64144ccf1df"
- language="*"
- />
- </dependentAssembly>
- </dependency>
- -->
- </Assembly>
Zeilen 21 bis 25. Sieht zwar, für meine schmalen XML Kenntnisse, seltsam aus, da es nun zwei Application Blöcke gibt, aber was solls, es läuft ja.
Witzigerweise stehen auskommentiert in den Zeilen 48 bis 52 original die gleichen Befehle als Vorschlag.
Und nun kommen wir auch endlich zu meinem Problemchen:
Ich habe auf meinem Rechner 1 mit Veröffentlichen ein Installations Setup erstellt. Bei der Installation auf meinem Rechner 2 bekomme ich die Meldung das die Anwendung falsch formatiert ist. Und im Detail wird gesagt das Manifest ist fehlerhaft oder kann nicht geöffnet werden.
Wie erwähnt kann man sehen das der "neue" zweite Application Block vor dem Beginn des Compatibility Blocks steht.
Jetzt habe ich diesen "neuen" Block in den vorhandenen Application Block, der in dem vorhandenen Compatibillity Block steht gelegt...
Also so:
,
,
XML-Quellcode
- <?xml version="1.0" encoding="utf-8"?>
- <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
- <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
- <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
- <security>
- <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
- <!-- UAC-Manifestoptionen
- Wenn Sie die Ebene der Benutzerkontensteuerung für Windows ändern möchten, ersetzen Sie den
- Knoten "requestedExecutionLevel" wie folgt.
- <requestedExecutionLevel level="asInvoker" uiAccess="false" />
- <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
- <requestedExecutionLevel level="highestAvailable" uiAccess="false" />
- Durch Angabe des Elements "requestedExecutionLevel" wird die Datei- und Registrierungsvirtualisierung deaktiviert.
- Entfernen Sie dieses Element, wenn diese Virtualisierung aus Gründen der Abwärtskompatibilität
- für die Anwendung erforderlich ist.
- -->
- <requestedExecutionLevel level="asInvoker" uiAccess="false" />
- </requestedPrivileges>
- </security>
- </trustInfo>
- <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
- <application>
- <!-- Eine Liste der Windows-Versionen, unter denen diese Anwendung getestet
- und für die sie entwickelt wurde. Wenn Sie die Auskommentierung der entsprechenden Elemente aufheben,
- wird von Windows automatisch die kompatibelste Umgebung ausgewählt. -->
- <!-- Windows Vista -->
- <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
- <!-- Windows 7 -->
- <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
- <!-- Windows 8 -->
- <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
- <!-- Windows 8.1 -->
- <!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
- <!-- Windows 10 -->
- <!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
- <application xmlns="urn:schemas-microsoft-com:asm.v3">
- <windowsSettings>
- <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
- </windowsSettings>
- </application>
- </application>
- </compatibility>
- <!-- Gibt an, dass die Anwendung mit DPI-Werten kompatibel ist und von Windows nicht automatisch auf höhere
- DPI-Werte skaliert wird. WPF-Anwendungen (Windows Presentation Foundation) sind automatisch mit DPI-Werten kompatibel und müssen sich nicht
- anmelden. Für Windows Forms-Anwendungen für .NET Framework 4.6, die sich für diese Einstellung anmelden, muss
- auch die Einstellung "'EnableWindowsFormsHighDpiAutoResizing" in der "app.config" auf "true" festgelegt werden. -->
- <!--
- <application xmlns="urn:schemas-microsoft-com:asm.v3">
- <windowsSettings>
- <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
- </windowsSettings>
- </application>
- -->
- <!-- Designs für allgemeine Windows-Steuerelemente und -Dialogfelder (Windows XP und höher) aktivieren -->
- <!--
- <dependency>
- <dependentAssembly>
- <assemblyIdentity
- type="win32"
- name="Microsoft.Windows.Common-Controls"
- version="6.0.0.0"
- processorArchitecture="*"
- publicKeyToken="6595b64144ccf1df"
- language="*"
- />
- </dependentAssembly>
- </dependency>
- -->
- </Assembly>
Zeile 36 bis 42. Ok, nun also zwei verschachtelte Application Blöcke.
Erstelle ich nun so ein Setup mit meinem Rechner 1, dann kann ich es problemlos auf meinem Rechner 2 installieren.
Dummerweise läuft es dann aber nicht mehr auf meinem Rechner 1 wie vorher. Diese Befehle werden offenbar ignoriert. Das Programm läuft zwar, aber die Darstellung sieht wieder scheixxe aus.
Was nun tun???
Heisst es das ich nun zwei Versionen brauche??? Und was kommt noch auf mich zu beim Testen auf meinem Rechner 2?
Hat da jemand Erfahrungen mit?