Bagikan melalui


ICE69

ICE69 memeriksa bahwa semua substring formulir [$componentkey] dalam string yang diformat tidak merujuk silang komponen. Referensi lintas komponen terjadi ketika properti [$componentkey] dari string yang diformat mengacu pada komponen selain komponen yang disimpan di kolom Component_ tabel Anda.

Masalah dengan referensi lintas komponen muncul dari cara string yang diformat dievaluasi. Jika komponen yang direferensikan dengan properti [$componentkey] sudah diinstal dan tidak diubah selama penginstalan saat ini (misalnya, diinstal ulang, dipindahkan ke sumber, dan sebagainya), ekspresi [$componentkey] dievaluasi menjadi null, karena status tindakan komponen di [$componentkey] null. Masalah serupa dapat terjadi selama operasi peningkatan dan perbaikan.

Hasil

ICE69 mengembalikan kesalahan jika substring [$componentkey] dalam string yang diformat mereferensikan silang komponen di fitur lain. ICE69 mengembalikan peringatan jika substring [$componentkey] dalam string yang diformat mereferensikan silang komponen dalam fitur yang sama. (Tabel FeatureComponents digunakan untuk menentukan pemetaan ini. Ini harus memetakan ke fitur yang sama untuk peringatan. Komponen referensi dalam fitur induk atau komponen referensi dalam fitur turunan dianggap sebagai kesalahan.)

ICE69 melaporkan kesalahan jika substring [#FileKey] dalam string yang diformat mereferensikan file yang tidak ditentukan dalam tabel File sebagai milik komponen yang sama.

Contoh

ICE69 melaporkan hal berikut untuk contoh yang diperlihatkan.

WARNING: "Mismatched component reference. Entry 'Test' of the Shortcut table belongs to component 'QuickTest'. However, the formatted string in column 'Argument' references component 'Test'. Components are in the same feature."
ERROR: "Mismatched component reference. Entry 'Shortcut2' of the Shortcut table belongs to component 'QuickTest'. However, the formatted string in column 'Argument' references component 'Test2'. Components are not in the same feature."

Untuk memperbaiki kesalahan ini, jangan referensi silang komponen. Ubah [$componentkey] agar sesuai dengan komponen pintasan.

Tabel Pintasan (parsial)

Pintasan Komponen_ Argumen
Uji QuickTest -v [$Test]
Pintasan2 QuickTest [$Test 2]

 

Tabel Kata Kerja dan Ekstensi adalah kasus khusus di mana tabel Kata Kerja mereferensikan ekstensi milik komponen. Namun, Ekstensi dapat dimiliki oleh beberapa komponen karena kunci utama untuk tabel ekstensi terdiri dari kolom Ekstensi dan Component_. Anda dapat secara logis memiliki situasi berikut.

Tabel Kata Kerja (parsial)

Ekstensi Verba_ Argumen
Tst buka -v [$comp 1][$comp 2]

 

Tabel Ekstensi (parsial)

Ekstensi Komponen_
Tst comp1
Tst comp2

 

Tabel FeatureComponents

Fitur_ Komponen_
Fitur1 QuickTest
Fitur1 Uji
Fitur2 Test2

 

Dalam hal ini, Anda harus memastikan bahwa setidaknya salah satu properti [$componentkey] dievaluasi ke nilai non-null. Namun, setiap properti [$componentkey] di kolom Argumen dari tabel Kata Kerja ([$comp 1] dan [$comp 2] dalam contoh di atas) harus mereferensikan komponen yang mungkin disertakan dengan ekstensi yang terkait dengan kata kerja. Referensi seperti [$comp 3] akan menghasilkan peringatan dari ICE69.

Tabel AppId memiliki situasi yang sama dengan tabel Kata Kerja. Ini menggunakan tabel Kelas untuk referensi komponennya. Dalam hal ini, tabel AppId divalidasi dengan cara yang sama seperti validasi Verb-Extension (sekarang AppId-Class).

Kolom Argumen tabel Kelas divalidasi seperti Pintasan, Registri, dan tabel serupa.

Tabel yang digunakan selama eksekusi (hanya jika ditemukan)

IniFile

RemoveIniFile

Registri

RemoveRegistry

ServiceControl

ServiceInstall

Pintasan

Kata kerja

Ekstensi

Kelas

AppId

Lingkungan

Referensi ICE