Penulisan Paket Tunggal

Paket tujuan ganda adalah paket Pemasang Windows 5.0 yang telah ditulis untuk mampu menginstal aplikasi baik dalam konteks penginstalan per pengguna atau per komputer. Menyiapkan pengembang yang menggunakan paket tujuan ganda untuk aplikasi mereka dapat memberi pengguna mereka pilihan konteks penginstalan pada waktu penginstalan dan dapat menghapus permintaan kredensial UAC dari penginstalan per pengguna pada Windows 7 atau Windows Server 2008 R2. Pengembangan paket Windows Installer 5.0 tujuan ganda untuk penginstalan pada Windows 7 dan Windows Server 2008 R2 disebut sebagai penulisan paket tunggal.

Anda dapat mulai mengembangkan paket tujuan ganda untuk Windows 7 dan Windows Server 2008 R2 dengan menggunakan Windows Installer 5.0, properti MSIINSTALLPERUSER , properti ALLUSERS , dan folder dan pendaftaran Windows Shell yang mampu dikenal per pengguna. Ketika Windows Installer 5.0 menginstal paket tujuan ganda dalam konteks per pengguna pada Windows 7 atau Windows Server 2008 R2, alat penginstal mengarahkan entri file dan registri ke lokasi per pengguna dan tidak menampilkan permintaan UAC untuk kredensial. Ketika Pemasang Windows 5.0 menginstal paket tujuan ganda dalam konteks per komputer, alat penginstal mengarahkan file dan entri registri ke lokasi per komputer dan meminta kredensial UAC untuk mengonfirmasi bahwa pengguna memiliki hak istimewa yang memadai untuk menginstal perangkat lunak untuk semua pengguna komputer. Setelah Windows Installer 5.0 menginstal aplikasi, ia menggunakan konteks penginstalan yang sama untuk semua pembaruan, perbaikan, atau penghapusan aplikasi berikutnya.

Windows Installer 4.5 atau yang lebih lama: Properti MSIINSTALLPERUSER dan versi folder per pengguna yang dirujuk oleh properti ProgramFilesFolder, CommonFilesFolder, ProgramFiles64Folder, dan CommonFiles64Folder tidak didukung. Folder FOLDERID_UserProgramFiles dan FOLDERID_UserProgramFilesCommon tersedia dimulai dengan Windows 7 dan Windows Server 2008 R2. Ini berarti penginstalan yang dikembangkan untuk Windows Installer 4.5 atau file langsung dan entri registri yang lebih lama ke FOLDERID_ProgramFiles, FOLDERID_ProgramFilesCommon, FOLDERID_ProgramFilesX64, dan FOLDERID_ProgramFilesCommonX64. Karena ini adalah lokasi yang dapat diakses oleh pengguna lain dari komputer, Windows Vista dan sistem yang lebih baru memerlukan tampilan permintaan UAC untuk kredensial.

Ketika pengguna menginstal paket tujuan ganda yang ditulis untuk Windows Installer 5.0 dengan Windows Installer 4.5 atau yang lebih lama, alat penginstal mengabaikan properti MSIINSTALLPERUSER . Dalam hal ini, penginstalan dapat mengarahkan file dan entri registri ke lokasi yang dapat diakses oleh pengguna lain dan mengharuskan sistem untuk menampilkan permintaan UAC untuk kredensial. Pemasang Windows 5.0 dapat menginstal paket yang dikembangkan untuk Pemasang Windows 4.5 atau yang lebih lama, namun, penginstalan mengarahkan file dan entri registri ke lokasi yang dapat diakses oleh pengguna lain dan mengharuskan sistem untuk menampilkan permintaan UAC untuk kredensial.

Pedoman Pengembangan

Patuhi panduan penulisan paket tunggal berikut untuk memastikan bahwa paket dapat diinstal dalam konteks per pengguna atau per komputer. Ikuti panduan ini untuk memungkinkan pengguna memilih pada waktu penginstalan penginstalan per pengguna atau per komputer dan untuk menghapus perintah UAC dari penginstalan per pengguna.

  • Penginstalan per pengguna memerlukan Windows Installer 5.0 pada Windows 7 atau Windows Server 2008 R2. Anda harus memberi tahu pengguna bahwa paket mendukung penginstalan aplikasi per mesin pada versi sistem yang lebih lama.

  • Inisialisasi nilai untuk properti ALLUSERS dan MSIINSTALLPERUSER dalam Tabel Properti dari paket tujuan ganda Anda. Gunakan nilai ALLUSERS 2 dan nilai MSIINSTALLPERUSER 1 sebagai nilai awal. Ini menentukan penginstalan per pengguna sebagai default untuk paket tujuan ganda.

  • Pertimbangkan untuk menulis kotak dialog untuk antarmuka pengguna paket tujuan ganda Anda yang memungkinkan pengguna memilih konteks pada waktu penginstalan. Tulis kontrol pada kotak dialog kustom ini untuk mengatur nilai properti ALLUSERS dan MSIINSTALLPERUSER . Untuk nilai ALLUSERS 2, atur MSIINSTALLPERUSER ke nilai 1 untuk menentukan penginstalan per pengguna dan atur MSIINSTALLPERUSER ke string kosong ("") untuk menentukan penginstalan per komputer. Pengguna juga dapat mengatur ALLUSERS dan MSIINSTALLPERUSER pada baris perintah jika mereka menginstal paket dari baris perintah.

  • Validasi paket menggunakan Internal Consistency Evaluators - ICEs. Paket harus dapat lulus validasi oleh ICE105 untuk menjadi paket tujuan ganda yang valid.

  • Gunakan Tabel Registri dan Tabel RemoveRegistry untuk mengalihkan entri registri ke bagian registri per pengguna selama penginstalan per pengguna. Dalam penginstalan per pengguna, entri registri yang memiliki -1 di kolom Root dialihkan ke HKEY_CURRENT_USER, dan dalam penginstalan per mesin ini diarahkan ke HKEY_LOCAL_MACHINE. Dalam penginstalan per pengguna, entri registri yang memiliki msidbRegistryRootClassesRoot (0) di kolom Root dialihkan keKelasPerangkat Lunak\HKCU\, dan dalam penginstalan per komputer, ini diarahkan keKelasPerangkat Lunak\HKLM\.

  • Gunakan properti ProgramFilesFolder dalam tabel DirektoriPaket Penginstal Windows 32-bit untuk menentukan lokasi direktori yang berisi komponen 32-bit yang tidak dibagikan di seluruh aplikasi. Ketika pengguna menginstal paket tujuan ganda menggunakan konteks per komputer, komponen-komponen ini disimpan di folder Program Files pada Windows versi 32-bit dan di folder Program Files (x86) pada versi 64-bit sistem. Komponen dalam direktori ini dapat diakses oleh semua pengguna. Ketika pengguna menginstal paket tujuan ganda pada Windows 7 atau Windows Server 2008 R2 menggunakan konteks per pengguna, komponen ini disimpan di folder Program pengguna saat ini (misalnya di %LocalAppData%\Programs) dan hanya dapat diakses oleh pengguna tersebut.

  • Gunakan properti CommonFilesFolder dalam tabel DirektoriPaket Penginstal Windows 32-bit untuk menentukan lokasi direktori yang berisi komponen 32-bit yang dibagikan di seluruh aplikasi. Saat pengguna menginstal paket tujuan ganda menggunakan konteks per komputer, komponen ini disimpan di folder File Umum dan dapat diakses oleh semua pengguna. Ketika pengguna menginstal paket tujuan ganda pada Windows 7 atau Windows Server 2008 R2 menggunakan konteks per pengguna, komponen ini disimpan di folder Umum pengguna saat ini (misalnya di %LocalAppData%\Programs\Common) dan hanya dapat diakses oleh pengguna tersebut.

  • Gunakan properti ProgramFiles64Folder dalam tabel DirektoriPaket Pemasang Windows 64-bit untuk menentukan lokasi direktori yang berisi komponen 64-bit yang tidak dibagikan di seluruh aplikasi. Saat pengguna menginstal paket tujuan ganda menggunakan konteks per komputer, komponen ini disimpan di folder File Program. Komponen dalam direktori ini dapat diakses oleh semua pengguna. Ketika pengguna menginstal paket tujuan ganda pada Windows 7 atau Windows Server 2008 R2 menggunakan konteks per pengguna, komponen ini disimpan di folder Program pengguna saat ini (misalnya di %LocalAppData%\Programs) dan hanya dapat diakses oleh pengguna tersebut. Untuk informasi selengkapnya tentang penulisan paket untuk menginstal aplikasi pada sistem operasi 64-bit, lihat Pemasang Windows pada Sistem Operasi 64-bit.

  • Gunakan properti CommonFiles64Folder dalam tabel DirektoriPaket Penginstal Windows 64-bit untuk menentukan lokasi direktori yang berisi komponen 64-bit yang dibagikan di seluruh aplikasi. Saat pengguna menginstal paket tujuan ganda menggunakan konteks per komputer, komponen ini disimpan di folder File Umum dan dapat diakses oleh semua pengguna. Ketika pengguna menginstal paket tujuan ganda pada Windows 7 atau Windows Server 2008 R2 menggunakan konteks per pengguna, komponen ini disimpan di folder Umum pengguna saat ini (misalnya di %LocalAppData%\Programs\Common) dan hanya dapat diakses oleh pengguna tersebut.

  • Gunakan properti ProgramFilesFolder dan CommonFilesFolder dalam tabel DirektoriPaket Pemasang Windows 64-bit untuk menentukan lokasi direktori yang berisi komponen 32-bit. Gunakan nama yang berbeda untuk versi 32-bit dan 64-bit dari komponen apa pun yang disediakan dengan nama yang sama, atau sebagai alternatif, simpan versi di folder yang berbeda. Misalnya, tambahkan informasi ke tabel Direktori untuk menentukan lokasi direktori yang berisi versi 32-bit sebagai [ProgramFilesFolder]\NamaAplikasi Nama\ ISV\x86 dan lokasi direktori yang berisi versi 64-bit sebagai [Program64FilesFolder]\Nama AplikasiNama\ ISV\x64. Penginstalan per komputer kemudian menyimpan versi 32-bit di Program Files(x86)\ISV Name\Application Name\x86 dan menyimpan versi 64-bit di Program Files\ISV Name\Application Name\x64. Penginstalan per pengguna menyimpan versi 32-bit di %LocalAppData%\Programs\ISV Name\Application Name\x86 dan menginstal versi 64-bit di %LocalAppData%\Programs\ISV Name\Application Name\x64.

  • Simpan data konfigurasi per pengguna untuk aplikasi di bawah \Users\username\AppData.

  • Simpan templat dan file yang dihasilkan oleh aplikasi dalam subfolder di bawah \Users\username.

  • Jika aplikasi Anda menggunakan ekstensi shell, Anda harus menggunakan titik ekstensibilitas shell berkemampuan per pengguna yang tersedia mulai dari Windows 7 atau Windows Server 2008 R2.

  • Jangan gunakan tindakan kustom dalam paket Anda yang memerlukan hak istimewa yang ditingkatkan untuk dijalankan. Tabel CustomAction tidak boleh berisi tindakan kustom yang telah ditandai untuk dijalankan dengan hak istimewa yang ditinggikan. Untuk informasi selengkapnya tentang tindakan kustom yang ditingkatkan, lihat Keamanan Tindakan Kustom.

  • Jangan menulis dalam folder sistem global apa pun. Tabel Direktori tidak boleh berisi referensi ke salah satu properti folder sistem berikut ini.

AdminToolsFolder
CommonAppDataFolder
FontsFolder
System16Folder
System64Folder
SystemFolder
TempFolder
WindowsFolder
WindowsVolume

Contoh

Contoh paket tujuan ganda disediakan di Komponen Windows SDK untuk Pengembang Pemasang Windows sebagai file PUASample1.msi. Jika Anda memiliki SDK saat ini, Anda memiliki akses ke semua alat dan data yang diperlukan untuk mereproduksi paket penginstalan sampel. Untuk informasi selengkapnya tentang contoh ini, lihat Contoh Penulisan Paket Tunggal.