Saya tahu mengapa ini terjadi dan saya tahu saya perlu memodifikasi program saya untuk mengakomodasi Windows 7/8.
Bagus, kalau begitu saya akan mencoba untuk tidak memukul kuda mati (walaupun ini adalah salah satu yang saya sering suka memberikan cambuk yang bagus karena banyak orang yang salah paham). Saya hanya akan menunjukkan bahwa fakta bahwa program Anda pernah bekerja dengan benar, bahkan pada versi Windows yang lebih lama, merupakan konsekuensi yang menguntungkan dari bug laten. Folder "Program Files" tidak pernah dimaksudkan untuk dapat ditulisi. Anda tidak hanya mengatasi "masalah" konyol pada versi Windows yang lebih baru. Ini adalah sesuatu yang seharusnya dilakukan sejak awal.
Saya tahu folder appdata di bawah "pengguna" adalah tempat yang disarankan untuk menyimpan database/file kata/cadangan. Namun, pada sistem saya yang tersembunyi dan saya ingin mudah diakses oleh pengguna (bukan disembunyikan), jadi saya memikirkan folder MyDocuments?
Saya tahu ini rumit, jadi izinkan saya mencoba membuatnya sesederhana mungkin
Folder "Data Aplikasi" ditujukan untuk data yang ditujukan untuk penggunaan internal oleh aplikasi Anda dan tidak dimaksudkan untuk dilihat atau dimanipulasi secara langsung oleh pengguna.
Folder "Dokumen Saya" adalah untuk segala hal yang dapat dilihat dan dimanipulasi secara langsung oleh pengguna; dengan kata lain, data pengguna dan bukan data aplikasi.
Lalu ada juga varian per pengguna dan global dari masing-masing kedua jenis folder ini. Dalam kasus "Data Aplikasi", varian per pengguna dibagi lagi menjadi lokal (yang tetap berada di mesin lokal saja) dan roaming (yang mengikuti akun pengguna ke mesin mana pun di jaringan tempat dia masuk).
Jadi jika Anda ingin file "mudah diakses oleh pengguna", Anda harus menggunakan folder "My Documents". Untuk itulah—dokumen pengguna.
Alasan mengapa semua aturan rumit ini ada adalah karena aplikasi yang berperilaku buruk dari vendor populer seperti Microsoft dan Adobe memiliki (memiliki?) kecenderungan untuk membuang sampah ke folder "My Documents" milik pengguna, hal-hal yang tidak pernah dimaksudkan untuk berinteraksi dengan pengguna. secara langsung. Pengguna kemudian akan membuka folder dokumen mereka dan melihat banyak hal yang tidak pernah mereka taruh di sana. "Benda apa ini? Ini bukan milik saya. Di mana dokumen saya?" Ibu saya baru menanyakan hal ini minggu lalu ketika saya memperbarui PC-nya.
tidak jelas bagaimana menemukan MyDocuments. Adakah yang bisa membantu?
Dari VB 6? Cara mudahnya adalah yang disarankan oleh Bob dan Tandai pada pertanyaan yang Anda lihat. Ini melibatkan pembuatan objek Shell dan menanyakan lokasi folder yang Anda minati.
Bagian yang hilang adalah konstanta yang berhubungan dengan folder "My Documents". Anda dapat menemukan daftar lengkap konstanta di sini . Yang Anda inginkan diberi nama ssfPERSONAL
(karena dulu ketika API ini dibuat, Windows tidak begitu ramah dan nama "Dokumen Saya" belum ditemukan), yang memiliki nilai &H05
. Jadi kodenya terlihat seperti:
Const ssfPERSONAL = &H05
Dim strMyDocsPath As String
strMyDocsPath = CreateObject("Shell.Application").NameSpace(ssfPERSONAL).Self.Path
Jika saya ingin menggunakan sesuatu seperti MyDocuments\CompanyName atau bahkan folder Appdata yang disebutkan dalam tautan di atas, bagaimana cara memberi tahu paket/wizard penerapan untuk menginstal file mdb dan folder yang disebutkan di atas ke dalam folder khusus ini? Apakah ada makro untuk folder Appdata atau MyDocuments di PDW yang bisa saya gunakan?
Tidak banyak yang bisa saya tambahkan yang belum dibahas Bob dalam jawabannya, selain merekomendasikan hal itu sementara Anda memodernisasi aplikasi VB ini, Anda juga mempertimbangkan untuk membuang PDW kuno demi penginstal yang lebih baik.
Secara pribadi, saya penggemar berat Inno Setup, yang adalah utilitas penginstal gratis untuk aplikasi Windows yang menawarkan lebih banyak fitur daripada yang dapat Anda lakukan. Ia bekerja sangat baik dengan aplikasi VB 6. Saya sendiri sudah menggunakannya berkali-kali untuk itu. Menurut saya ini cukup mudah digunakan, setidaknya untuk dasar-dasarnya. Ini mendukung segala macam penyesuaian tingkat lanjut, dan beberapa di antaranya mungkin rumit jika Anda tidak belajar dengan baik dengan membaca dokumentasi, tetapi semuanya sangat bisa dilakukan. Saya bahkan tersandung dalam menulis kode Delphi untuk menyesuaikan proyek Inno Setup!
Di Inno Setup, Anda mengakses jalur ke folder sistem menggunakan salah satu konstanta yang telah ditentukan sebelumnya. Misalnya, {userdocs}
dan {commondocs}
. Ini berfungsi seperti (jika tidak persis seperti, sudah lama sekali) makro di PDW.
Tentu saja, hal ini masih belum menyelesaikan masalah yang ditunjukkan Bob dengan benar: konsep folder "Dokumen Saya" milik pengguna tidak terlalu masuk akal bagi penginstal. Tentu saja Anda dapat mengakses folder "Dokumen Saya" global (publik) karena folder tersebut dibagikan kepada semua pengguna, namun ini mungkin bukan folder yang Anda inginkan. Penginstal harus dapat dijalankan oleh pengguna mana pun dengan hak istimewa yang memadai, dan kenyataannya ini sering kali merupakan akun administrator yang berbeda dari akun pengguna biasa yang digunakan untuk menjalankan aplikasi Anda. Anda tidak dapat menggunakan akun pengguna tertentu selama penyiapan, dan desain Anda harus memperhitungkan hal ini.
Bagi saya, pendekatan "templat" cocok untuk Anda. Kumpulan lengkap file yang digunakan untuk membuat akun pengguna baru dapat disimpan di folder "Program Files". Ini sebenarnya adalah tempat yang bagus untuk itu karena terlindung dengan baik dari modifikasi yang salah, dan karena Anda hanya akan membaca darinya, Anda dijamin memiliki izin yang diperlukan. Ketika aplikasi diluncurkan untuk pertama kalinya dengan akun pengguna baru, aplikasi dapat mendeteksi fakta ini dan menawarkan untuk menyiapkan akun pengguna baru untuk digunakan dengan aplikasi tersebut. Pada titik ini, Anda tahu bahwa Anda menjalankan akun pengguna yang benar, sehingga Anda dapat menggunakan kode di atas untuk menanyakan lokasi folder "Dokumen Saya" pengguna tersebut. Dengan struktur folder yang diinginkan, semuanya diatur dalam subdirektori folder aplikasi Anda di "Program Files", menyiapkan akun pengguna baru bisa semudah menyalin folder itu. Jika Anda perlu mengumpulkan informasi dari pengguna atau menawarkan opsi penyesuaian, Anda dapat menulis sedikit "First Run Wizard".
person
Cody Gray
schedule
20.03.2013