Manifes aplikasi
Manifes aplikasi (juga dikenal sebagai manifes aplikasi berdampingan, atau manifes fusi ) adalah file XML yang menjelaskan dan mengidentifikasi rakitan bersama dan pribadi yang harus diikat aplikasi pada waktu proses. Ini harus menjadi versi rakitan yang sama yang digunakan untuk menguji aplikasi. Manifes aplikasi mungkin juga menjelaskan metadata untuk file yang bersifat privat ke aplikasi.
Untuk daftar lengkap skema XML, lihat Skema file manifes.
Manifes aplikasi memiliki elemen dan atribut berikut.
Elemen | Atribut | Wajib |
---|---|---|
rakitan | Ya | |
manifestVersion | Ya | |
noInherit | No | |
assemblyIdentity | Ya | |
jenis | Ya | |
nama | Ya | |
bahasa | No | |
processorArchitecture | No | |
versi | Ya | |
Publickeytoken | No | |
Kompatibilitas | No | |
application | No | |
supportedOS | No | |
Id | Ya | |
maxversiontested | No | |
Id | Ya | |
Ketergantungan | No | |
dependenAssembly | No | |
file | No | |
nama | Ya | |
hashalg | No | |
Hash | No | |
activatableClass | No | |
nama | Ya | |
threadingModel | Ya | |
activeCodePage | No | |
autoElevate | No | |
disableTheming | No | |
disableWindowFiltering | No | |
dpiAware | No | |
dpiAwareness | No | |
gdiScaling | No | |
highResolutionScrollingAware | No | |
longPathAware | No | |
printerDriverIsolation | No | |
ultraHighResolutionScrollingAware | No | |
msix | No | |
heapType | No | |
supportedArchitectures | No | |
trustInfo | No |
Lokasi file
Jika memungkinkan, Anda harus menyematkan manifes aplikasi sebagai sumber daya dalam file aplikasi .exe
Anda atau .dll
. Jika Anda tidak dapat melakukannya, maka Anda dapat menempatkan file manifes aplikasi di direktori yang sama dengan .exe
atau .dll
.
Untuk informasi selengkapnya, lihat Menginstal rakitan berdampingan.
Nama file
Dengan konvensi, manifes aplikasi harus memiliki nama yang sama dengan file yang dapat dieksekusi aplikasi Anda, dengan .manifest
ekstensi ditambahkan ke dalamnya.
Misalnya, manifes aplikasi yang merujuk ke atau example.dll
harus menggunakan sintaks nama file berikut (jika ID sumber daya adalah 1, maka Anda dapat menghilangkan <segmen ID> sumber daya sintaksis).example.exe
example.exe.<id> sumber daya.manifes
example.dll.<id> sumber daya.manifes
Elemen
Nama elemen dan atribut peka huruf besar/kecil. Nilai elemen dan atribut tidak peka huruf besar/kecil, kecuali untuk nilai atribut jenis.
rakitan
Elemen kontainer. Subelemen pertamanya harus berupa elemen noInherit atau assemblyIdentity . Harus diisi.
Elemen assembly harus berada di namespace urn:schemas-microsoft-com:asm.v1
. Elemen turunan dari assembly juga harus berada di namespace layanan ini, dengan warisan atau dengan penandaan.
Elemen assembly memiliki atribut berikut.
Atribut | Deskripsi |
---|---|
manifestVersion | Atribut manifestVersion harus diatur ke 1.0 . |
noInherit
Sertakan elemen ini dalam manifes aplikasi untuk mengatur konteks aktivasi yang dihasilkan dari manifes dengan bendera "tanpa pewarisan". Ketika bendera ini tidak diatur dalam konteks aktivasi, dan konteks aktivasi aktif, bendera ini diwariskan oleh utas baru dalam proses, jendela, prosedur jendela, dan Panggilan Prosedur Asinkron yang sama. Mengatur bendera ini mencegah objek baru mewarisi konteks aktif.
Elemen noInherit bersifat opsional dan biasanya dihilangkan. Sebagian besar rakitan tidak bekerja dengan benar menggunakan konteks aktivasi tanpa warisan karena rakitan harus dirancang secara eksplisit untuk mengelola penyebaran konteks aktivasi mereka sendiri. Penggunaan elemen noInherit mengharuskan setiap rakitan dependen yang direferensikan oleh manifes aplikasi memiliki elemen noInherit dalam manifes perakitannya.
Jika noInherit digunakan dalam manifes, itu harus menjadi subelemen pertama dari elemen assembly. Elemen assemblyIdentity harus datang segera setelah elemen noInherit . Jika noInherit tidak digunakan, assemblyIdentity harus menjadi subelemen pertama dari elemen assembly . Elemen noInherit tidak memiliki elemen turunan. Ini bukan elemen yang valid dalam manifes perakitan.
assemblyIdentity
Sebagai subelemen pertama dari elemen perakitan, assemblyIdentity menjelaskan dan secara unik mengidentifikasi aplikasi yang memiliki manifes aplikasi ini. Sebagai subelemen pertama dari elemen dependentAssembly , assemblyIdentity menjelaskan rakitan berdampingan yang diperlukan oleh aplikasi. Perhatikan bahwa setiap perakitan yang dirujuk dalam manifes aplikasi memerlukan assemblyIdentity yang sama persis dengan assemblyIdentity dalam manifes assembly assembly yang dirujuk sendiri.
Elemen assemblyIdentity memiliki atribut berikut. Ini tidak memiliki subelemen.
Atribut | Deskripsi |
---|---|
jenis | Menentukan jenis aplikasi atau rakitan. Nilainya harus win32 dan semuanya dalam huruf kecil. Harus diisi. |
nama | Secara unik menamai aplikasi atau assembly. Gunakan format berikut untuk nama: Organization.Division.Name . Contoh: Microsoft.Windows.mysampleApp . Harus diisi. |
bahasa | Mengidentifikasi bahasa aplikasi atau rakitan. Jika aplikasi atau rakitan khusus bahasa, tentukan kode bahasa DHTML. Dalam assemblyIdentity aplikasi yang ditujukan untuk penggunaan di seluruh dunia (bahasa netral) menghilangkan atribut bahasa. Dalam assemblyIdentity dari rakitan yang ditujukan untuk penggunaan di seluruh dunia (bahasa netral) atur nilai bahasa ke * . Opsional. |
processorArchitecture | Menentukan prosesor. Nilai yang valid meliputi x86 , amd64 , arm dan arm64 . Anda juga dapat menentukan * , yang memastikan bahwa semua platform ditargetkan. Opsional. |
versi | Menentukan aplikasi atau versi rakitan. Gunakan format versi empat bagian: mmmmm.nnnnn.ooooo.ppppp . Masing-masing bagian yang dipisahkan oleh periode bisa 0-65535 inklusif. Untuk informasi selengkapnya, lihat Versi Rakitan. Harus diisi. |
Publickeytoken | String heksadesimal 16 karakter yang mewakili 8 byte terakhir hash SHA-1 dari kunci publik tempat aplikasi atau rakitan ditandatangani. Kunci publik yang digunakan untuk menandatangani katalog harus 2048 bit atau lebih besar. Diperlukan untuk semua rakitan berdampingan bersama. |
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
...
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
...
</assembly>
kompatibilitas
Berisi setidaknya satu aplikasi. Elemen ini tidak memiliki atribut. Opsional. Aplikasi bermanifestasi tanpa elemen kompatibilitas default ke kompatibilitas Windows Vista pada Windows 7.
Elemen kompatibilitas harus berada di namespace urn:schemas-microsoft-com:compatibility.v1
layanan . Elemen turunan dari kompatibilitas juga harus berada di namespace layanan ini, dengan pewarisan atau dengan pemberian tag.
aplikasi
Berisi setidaknya satu elemenOS yang didukung. Mulai dari Windows 10, versi 1903, juga dapat berisi satu elemen maxversiontested opsional. Elemen ini tidak memiliki atribut. Opsional.
supportedOS
Elemen supportedOS memiliki atribut berikut. Ini tidak memiliki subelemen.
Atribut | Deskripsi |
---|---|
Id | Atur atribut Id ke {e2011457-1546-43c5-a5fe-008deee3d3f0} untuk menjalankan aplikasi menggunakan fungsionalitas Vista. Ini dapat memungkinkan aplikasi yang dirancang untuk Windows Vista untuk berjalan pada sistem operasi yang lebih baru. Atur atribut Id ke {35138b9a-5d96-4fbd-8e2d-a2440225f93a} untuk menjalankan aplikasi menggunakan fungsionalitas Windows 7. Aplikasi yang mendukung fungsionalitas Windows Vista, Windows 7, dan Windows 8 tidak memerlukan manifes terpisah. Dalam hal ini, tambahkan GUID untuk semua sistem operasi Windows. Untuk informasi tentang perilaku atribut Id di Windows, lihat Buku Masak Kompatibilitas Windows 8 dan Windows Server 2012. GUID berikut sesuai dengan sistem operasi yang ditunjukkan: {8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a} -> Windows 10, Windows 11, Windows Server 2016, Windows Server 2019 dan Windows Server 2022 {1f676c76-80e1-4239-95bb-83d0f6d0da78} -> Windows 8.1 dan Windows Server 2012 R2 {4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38} -> Windows 8 dan Windows Server 2012 {35138b9a-5d96-4fbd-8e2d-a2440225f93a} -> Windows 7 dan Windows Server 2008 R2 {e2011457-1546-43c5-a5fe-008deee3d3f0} -> Windows Vista dan Windows Server 2008 Anda dapat menguji ini pada Windows 7 atau Windows 8.x dengan menjalankan Resource Monitor (resmon), masuk ke tab CPU, mengklik kanan label kolom, "Pilih Kolom...", dan periksa "Konteks Sistem Operasi". Pada Windows 8.x, Anda juga dapat menemukan kolom ini yang tersedia di Task Manager (taskmgr). Konten kolom menunjukkan nilai tertinggi yang ditemukan atau "Windows Vista" sebagai default. |
maxversiontested
Elemen maxversiontested menentukan versi Windows yang diuji aplikasi terhadap dimulai dengan versi OS minimum yang didukung aplikasi hingga versi maksimum. Set lengkap versi dapat ditemukan di sini. Ini dimaksudkan untuk digunakan oleh aplikasi desktop yang menggunakan Kepulauan XAML dan yang tidak disebarkan dalam paket MSIX. Elemen ini didukung di Windows 10, versi 1903, dan versi yang lebih baru.
Elemen maxversiontested memiliki atribut berikut. Ini tidak memiliki subelemen.
Atribut | Deskripsi |
---|---|
Id | Atur atribut Id ke string versi 4 bagian yang menentukan versi maksimum Windows yang diuji aplikasi. Misalnya, "10.0.18362.1" untuk Windows 10, versi 1903. Harus diisi. |
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
...
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Windows 10, version 1903 -->
<maxversiontested Id="10.0.18362.1"/>
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
</application>
</compatibility>
...
</assembly>
dependensi
Berisi setidaknya satu dependentAssembly. Elemen ini tidak memiliki atribut. Opsional.
dependenAssembly
Subelemen pertama dependentAssembly harus merupakan elemen assemblyIdentity yang menjelaskan rakitan berdampingan yang diperlukan oleh aplikasi. Setiap dependentAssembly harus berada di dalam tepat satu dependensi. Elemen ini tidak memiliki atribut.
file
Menentukan file yang bersifat privat ke aplikasi. Opsional.
Elemen file memiliki atribut yang diperlihatkan dalam tabel berikut.
Atribut | KETERANGAN |
---|---|
nama | Nama file. Misalnya, Comctl32.dll. Harus diisi. |
hashalg | Algoritma yang digunakan untuk membuat hash file. Nilai ini harus SHA1. Opsional. |
Hash | Hash file yang disebut dengan nama. String panjang heksadesimal tergantung pada algoritma hash. Opsional. |
activatableClass
Memungkinkan aplikasi desktop non-paket untuk menggunakan Komponen Windows Runtime (WinRT) yang ditentukan pengguna. Elemen ini didukung di Windows 10, versi 1903, dan versi yang lebih baru. Untuk informasi selengkapnya, lihat artikel ini.
Elemen activatableClass harus berada di namespace urn:schemas-microsoft-com:winrt.v1
.
Elemen activatableClass memiliki atribut berikut.
Atribut | KETERANGAN |
---|---|
nama | Menentukan pengidentifikasi kelas untuk kelas yang dapat diaktifkan. Harus diisi. |
threadingModel | Mewakili model utas apartemen yang digunakan untuk mengaktifkan server dalam proses. Nilai yang valid meliputi both , STA , atau MTA . Lihat artikel ini untuk informasi selengkapnya. Harus diisi. |
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
...
<file name="WinRTComponent.dll">
<activatableClass
name="WinRTComponent.MessageHolder"
threadingModel="both"
xmlns="urn:schemas-microsoft-com:winrt.v1"
/>
</file>
...
</assembly>
activeCodePage
Pada Windows 10, elemen ini memaksa proses untuk menggunakan UTF-8 sebagai halaman kode proses. Untuk informasi selengkapnya, lihat Menggunakan halaman kode UTF-8. Pada Windows 10, satu-satunya nilai yang valid untuk activeCodePage adalah UTF-8.
Mulai Windows 11, elemen ini juga memungkinkan pemilihan halaman kode non-UTF-8 warisan, atau halaman kode untuk lokal tertentu untuk kompatibilitas aplikasi warisan. Aplikasi modern sangat didorong untuk menggunakan Unicode. Pada Windows 11, activeCodePage juga dapat diatur ke nilai Warisan atau nama lokal seperti en-US atau ja-JP.
- Pada komputer yang dikonfigurasi ke halaman kode aktif sistem UTF-8, Warisan akan mengembalikan proses ke halaman kode lokal sistem. Jika lokal sistem tidak memiliki halaman kode yang ditentukan, maka Windows-1252/437 akan digunakan. Pengaturan halaman kode warisan hanya didukung dalam manifes Fusion dan hanya dimulai dengan Windows 11.
- Ketika nama lokal seperti en-US disediakan, halaman kode proses akan diatur dengan tepat untuk halaman kode lokal tersebut. Misalnya, Windows-1252 dan 437 untuk en-US, atau 932 untuk ja-JP.
Elemen ini pertama kali ditambahkan di Windows 10 versi 1903 (Pembaruan Mei 2019). Anda dapat mendeklarasikan properti ini dan menargetkan/menjalankan pada build Windows sebelumnya, tetapi Anda harus menangani deteksi halaman kode warisan dan konversi seperti biasa. Elemen ini tidak memiliki atribut.
Contoh berikut menunjukkan cara menggunakan elemen ini untuk memaksa proses saat ini menggunakan UTF-8 sebagai halaman kode proses.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
...
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings">
<activeCodePage>UTF-8</activeCodePage>
</asmv3:windowsSettings>
</asmv3:application>
...
</assembly>
autoElevate
Menentukan apakah peningkatan otomatis diaktifkan. TRUE menunjukkan bahwa itu diaktifkan. Elemen ini tidak memiliki atribut. File yang dapat dieksekusi harus ditandatangani secara digital oleh Windows Publisher. Untuk penggunaan internal.
disableTheming
Menentukan apakah memberikan elemen UI tema dinonaktifkan. TRUE menunjukkan dinonaktifkan. Elemen ini tidak memiliki atribut.
disableWindowFiltering
Menentukan apakah akan menonaktifkan pemfilteran jendela. TRUE menonaktifkan pemfilteran jendela sehingga Anda dapat menghitung jendela imersif dari desktop. disableWindowFiltering ditambahkan di Windows 8 dan tidak memiliki atribut.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
...
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2011/WindowsSettings">
<disableWindowFiltering>true</disableWindowFiltering>
</asmv3:windowsSettings>
</asmv3:application>
...
</assembly>
dpiAware
Menentukan apakah proses saat ini adalah titik per inci (dpi) sadar.
Windows 10, versi 1607: Elemen dpiAware diabaikan jika elemen dpiAwareness ada. Anda dapat menyertakan kedua elemen dalam manifes jika Anda ingin menentukan perilaku yang berbeda untuk Windows 10, versi 1607 daripada untuk versi sistem operasi yang lebih lama.
Tabel berikut menjelaskan perilaku yang dihasilkan berdasarkan keberadaan elemen dpiAware dan teks yang dikandungnya. Teks dalam elemen tidak peka huruf besar/kecil.
Status elemen dpiAware | Deskripsi |
---|---|
Absen | Proses saat ini adalah dpi tidak menyadari secara default. Anda dapat mengubah pengaturan ini secara terprogram dengan memanggil fungsi SetProcessDpiAwareness atau SetProcessDPIAware. |
Berisi "true" | Proses saat ini adalah sistem yang sadar dpi. |
Berisi "false" | Windows Vista, Windows 7 dan Windows 8: Perilakunya sama seperti ketika dpiAware tidak ada. Windows 8.1 dan Windows 10: Proses saat ini tidak menyadari dpi, dan Anda tidak dapat mengubah pengaturan ini secara terprogram dengan memanggil fungsi SetProcessDpiAwareness atau SetProcessDPIAware. |
Berisi "true/pm" | Windows Vista, Windows 7 dan Windows 8: Proses saat ini adalah sistem dpi sadar. Windows 8.1 dan Windows 10: Proses saat ini sadar per monitor dpi. |
Berisi "per monitor" | Windows Vista, Windows 7 dan Windows 8: Perilakunya sama seperti ketika dpiAware tidak ada. Windows 8.1 dan Windows 10: Proses saat ini sadar per monitor dpi. |
Berisi untai (karakter) lainnya | Windows Vista, Windows 7 dan Windows 8: Perilakunya sama seperti ketika dpiAware tidak ada. Windows 8.1 dan Windows 10: Proses saat ini tidak menyadari dpi, dan Anda tidak dapat mengubah pengaturan ini secara terprogram dengan memanggil fungsi SetProcessDpiAwareness atau SetProcessDPIAware. |
Untuk informasi selengkapnya tentang pengaturan kesadaran dpi, lihat Pengembangan Aplikasi Desktop DPI Tinggi di Windows.
dpiAware tidak memiliki atribut.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
...
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
...
</assembly>
dpiAwareness
Menentukan apakah proses saat ini adalah titik per inci (dpi) sadar.
Versi minimum sistem operasi yang mendukung elemen dpiAwareness adalah Windows 10, versi 1607. Untuk versi yang mendukung elemen dpiAwareness , dpiAwareness mengambil alih elemen dpiAware . Anda dapat menyertakan kedua elemen dalam manifes jika Anda ingin menentukan perilaku yang berbeda untuk Windows 10, versi 1607 daripada untuk versi sistem operasi yang lebih lama.
Elemen dpiAwareness dapat berisi satu item atau daftar item yang dipisahkan koma. Dalam kasus terakhir, item pertama (paling kiri) dalam daftar yang dikenali oleh sistem operasi digunakan. Dengan cara ini, Anda dapat menentukan perilaku berbeda yang didukung dalam versi sistem operasi Windows di masa mendatang.
Tabel berikut menjelaskan perilaku yang dihasilkan berdasarkan keberadaan elemen dpiAwareness dan teks yang dikandungnya dalam item yang dikenali paling kiri. Teks dalam elemen tidak peka huruf besar/kecil.
status elemen dpiAwareness : | Deskripsi |
---|---|
Elemen tidak ada | Elemen dpiAware menentukan apakah prosesnya sadar dpi. |
Tidak berisi item yang dikenali | Proses saat ini adalah dpi tidak menyadari secara default. Anda dapat mengubah pengaturan ini secara terprogram dengan memanggil fungsi SetProcessDpiAwareness atau SetProcessDPIAware. |
Item pertama yang dikenali adalah "sistem" | Proses saat ini adalah sistem yang sadar dpi. |
Item pertama yang dikenali adalah "permonitor" | Proses saat ini sadar dpi per monitor. |
Item pertama yang dikenali adalah "permonitorv2" | Proses saat ini menggunakan konteks kesadaran per monitor-v2 dpi. Item ini hanya akan dikenali pada Windows 10 versi 1703 atau yang lebih baru. |
Item pertama yang dikenali adalah "unaware" | Proses saat ini tidak menyadari dpi. Anda tidak dapat mengubah pengaturan ini secara terprogram dengan memanggil fungsi SetProcessDpiAwareness atau SetProcessDPIAware. |
Untuk informasi selengkapnya tentang pengaturan kesadaran dpi yang didukung oleh elemen ini, lihat DPI_AWARENESS dan DPI_AWARENESS_CONTEXT.
dpiAwareness tidak memiliki atribut.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
...
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
<dpiAwareness>PerMonitorV2, unaware</dpiAwareness>
</asmv3:windowsSettings>
</asmv3:application>
...
</assembly>
gdiScaling
Menentukan apakah penskalakan GDI diaktifkan. Versi minimum sistem operasi yang mendukung elemen gdiScaling adalah Windows 10 versi 1703.
Kerangka kerja GDI (antarmuka perangkat grafis) dapat menerapkan penskalakan DPI ke primitif dan teks berdasarkan per monitor tanpa pembaruan pada aplikasi itu sendiri. Ini dapat berguna untuk aplikasi GDI tidak lagi diperbarui secara aktif.
Grafik non-vektor (seperti bitmap, ikon, atau bilah alat) tidak dapat diskalakan oleh elemen ini. Selain itu, grafik dan teks yang muncul dalam bitmap yang dibangun secara dinamis oleh aplikasi juga tidak dapat diskalakan oleh elemen ini. Untuk informasi selengkapnya, lihat Meningkatkan pengalaman DPI tinggi di Aplikasi Desktop berbasis GDI.
Anda dapat mengubah pengaturan ini secara terprogram dengan memanggil fungsi SetThreadDpiAwarenessContext atau SetProcessDpiAwarenessContext dengan DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED
nilai.
TRUE menunjukkan bahwa elemen ini diaktifkan. Elemen ini tidak memiliki atribut.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
...
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2017/WindowsSettings">
<gdiScaling>true</gdiScaling>
</asmv3:windowsSettings>
</asmv3:application>
...
</assembly>
highResolutionScrollingAware
Menentukan apakah sadar gulir resolusi tinggi diaktifkan. TRUE menunjukkan bahwa itu diaktifkan. Elemen ini tidak memiliki atribut.
longPathAware
Mengaktifkan jalur panjang yang melebihi panjang MAX_PATH . Elemen ini didukung di Windows 10, versi 1607, dan yang lebih baru. Untuk informasi selengkapnya, lihat artikel ini.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
...
<asmv3:application>
<asmv3:windowsSettings xmlns:ws2="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
<ws2:longPathAware>true</ws2:longPathAware>
</asmv3:windowsSettings>
</asmv3:application>
...
</assembly>
printerDriverIsolation
Menentukan apakah isolasi pengandar pencetak diaktifkan. TRUE menunjukkan bahwa itu diaktifkan. Elemen ini tidak memiliki atribut. Isolasi pengandar pencetak meningkatkan keandalan layanan cetak Windows dengan memungkinkan pengandar pencetak berjalan dalam proses yang terpisah dari proses di mana penampung cetak berjalan. Dukungan untuk isolasi pengandar printer dimulai di Windows 7 dan Windows Server 2008 R2. Aplikasi dapat mendeklarasikan isolasi driver printer dalam manifes aplikasinya untuk mengisolasi dirinya dari pengandar printer dan meningkatkan keandalannya. Artinya, aplikasi tidak akan mengalami crash jika driver printer mengalami kesalahan.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
...
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2011/WindowsSettings">
<printerDriverIsolation>true</printerDriverIsolation>
</asmv3:windowsSettings>
</asmv3:application>
...
</assembly>
ultraHighResolutionScrollingAware
Menentukan apakah sadar pengguliran resolusi ultra tinggi diaktifkan. TRUE menunjukkan bahwa itu diaktifkan. Elemen ini tidak memiliki atribut.
msix
Menentukan info identitas paket dengan lokasi eksternal untuk aplikasi saat ini (lihat Memberikan identitas paket dengan pengemasan dengan lokasi eksternal). Elemen ini didukung di Windows 10, versi 2004, dan versi yang lebih baru.
Elemen msix harus berada di namespace urn:schemas-microsoft-com:msix.v1
layanan . Ini memiliki atribut yang ditunjukkan dalam tabel berikut.
Atribut | Deskripsi |
---|---|
penerbit | Menjelaskan informasi penerbit. Nilai ini harus cocok dengan atribut Publisher di elemen Identity dalam manifes paket aplikasi paket Anda dengan lokasi eksternal. |
packageName | Menjelaskan isi paket. Nilai ini harus cocok dengan atribut Name di elemen Identity dalam manifes paket aplikasi paket Anda dengan lokasi eksternal. |
applicationId | Pengidentifikasi unik aplikasi. Nilai ini harus cocok dengan atribut Id di elemen Aplikasi dalam manifes paket aplikasi paket Anda dengan lokasi eksternal. |
<?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="Contoso.PhotoStoreApp"/>
<msix xmlns="urn:schemas-microsoft-com:msix.v1"
publisher="CN=Contoso"
packageName="ContosoPhotoStore"
applicationId="ContosoPhotoStore"
/>
</assembly>
heapType
Mengambil alih implementasi timbunan default untuk digunakan oleh API timbunan Win32.
- Nilai SegmentHeap menunjukkan bahwa timbunan segmen akan digunakan. Tumpuk segmen adalah implementasi timbunan modern yang umumnya akan mengurangi penggunaan memori Anda secara keseluruhan. Elemen ini didukung di Windows 10, versi 2004 (build 19041) dan yang lebih baru.
- Semua nilai lainnya diabaikan.
Elemen ini tidak memiliki atribut.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
...
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2020/WindowsSettings">
<heapType>SegmentHeap</heapType>
</asmv3:windowsSettings>
</asmv3:application>
...
</assembly>
supportedArchitectures
Untuk executable .NET Framework khusus IL, menentukan daftar arsitektur prosesor asli yang kompatibel dengan aplikasi. Bisa berisi satu atau beberapa nilai berikut, dipisahkan oleh spasi:
- amd64
- arm64
Elemen ini tidak memiliki atribut.
Elemen ini didukung di Windows 11, versi 24H2 dan yang lebih baru.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
...
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2024/WindowsSettings">
<supportedArchitectures>amd64 arm64</supportedArchitectures>
</asmv3:windowsSettings>
</asmv3:application>
...
</assembly>
trustInfo
Semua aplikasi yang mematuhi UAC harus memiliki tingkat eksekusi yang diminta yang ditambahkan ke manifes aplikasi. Tingkat eksekusi yang diminta menentukan hak istimewa yang diperlukan untuk aplikasi. Untuk informasi selengkapnya, lihat Bagaimana Kontrol Akun Pengguna (UAC) Memengaruhi Aplikasi Anda.
Tingkat eksekusi yang diminta ditentukan dengan atribut tingkat dari descendent requestedExecutionLevel dari elemen trustInfo . Nilai yang diizinkan untuk tingkat adalah:
Nilai | Deskripsi |
---|---|
asInvoker | Aplikasi berjalan pada tingkat izin yang sama dengan proses yang memulainya. Anda dapat meningkatkan aplikasi ke tingkat izin yang lebih tinggi dengan memilih Jalankan sebagai Administrator. |
requireAdministrator | Aplikasi berjalan menggunakan izin administrator. Pengguna yang memulai aplikasi harus menjadi anggota grup Administrator. Jika proses pembukaan tidak berjalan dengan izin administratif, sistem akan meminta kredensial. |
highestAvailable | Aplikasi berjalan pada tingkat izin tertinggi yang dapat dijalankan. Jika pengguna yang memulai aplikasi adalah anggota grup Administrator, opsi ini sama level="requireAdministrator" dengan . Jika tingkat izin tertinggi yang tersedia lebih tinggi dari tingkat proses pembukaan, sistem akan meminta kredensial. |
Mengatur tingkat untuk highestAvailable
memastikan bahwa aplikasi akan berjalan dengan sukses dengan pengguna yang merupakan anggota grup Administrator dan mereka yang tidak. Jika aplikasi hanya dapat berfungsi dengan akses administratif ke sistem, maka menandai aplikasi dengan tingkat requireAdministrator
eksekusi yang diminta memastikan bahwa sistem mengidentifikasi program ini sebagai aplikasi administratif dan melakukan langkah-langkah elevasi yang diperlukan.
Secara default, linker Visual C++ menyematkan fragmen UAC ke dalam manifes aplikasi dengan tingkat asInvoker
eksekusi .
Elemen requestedExecutionLevel juga memiliki atribut opsional uiAccess. Atur nilai ini ke true
jika Anda ingin aplikasi melewati tingkat perlindungan antarmuka pengguna dan mendorong input ke jendela izin yang lebih tinggi di desktop. Atur atribut ini ke true
hanya untuk aplikasi aksesibilitas antarmuka pengguna. Default ke false
. Pembatasan tambahan dari pengaturan kebijakan keamanan dapat diterapkan, lihat Kontrol Akun Pengguna: Hanya meningkatkan aplikasi UIAccess yang diinstal di lokasi yang aman. Untuk informasi selengkapnya, lihat Pertimbangan Keamanan untuk Teknologi Bantuan.
Menentukan node requestedExecutionLevel akan menonaktifkan virtualisasi file dan registri. Jika Anda ingin menggunakan Virtualisasi File dan Registri untuk kompatibilitas mundur, hilangkan node requestedExecutionLevel .
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
Contoh
Berikut ini adalah contoh manifes aplikasi untuk aplikasi bernama MySampleApp.exe. Aplikasi ini menggunakan rakitan berdampingan SampleAssembly.
<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32" name="MyOrganization.MyDivision.MySampleApp" version="6.0.0.0" processorArchitecture="*" />
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Proseware.Research.SampleAssembly" version="6.0.0.0" processorArchitecture="*" publicKeyToken="0000000000000000" />
</dependentAssembly>
</dependency>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Windows 10 and Windows 11 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
<!-- Windows 8.1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
<!-- Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
<!-- Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
<!-- Windows Vista -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
</application>
</compatibility>
</assembly>