Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Di WiX bagaimana cara menguji keberadaan kunci registri (bukan nilai) untuk Oracle ODP.Net?

Oke, jadi berkat informasi Sascha sepertinya jawabannya adalah "Anda tidak bisa" menggunakan fungsi registri WiX bawaan.

Sekarang saya juga ingin tes ini terjadi bersama dengan tes kondisi peluncuran lainnya yang membuatnya sedikit lebih sulit. Membuat ini bekerja telah memakan waktu cukup lama meskipun cukup sederhana sekarang saya tahu caranya, jadi semoga ini akan menyelamatkan orang lain dari rasa sakit yang sama.

Pertama buat properti di dalam Produk WiX Anda:

<Property Id="ODPNETINSTALLED">0</Property>

Selanjutnya buat tindakan kustom untuk memeriksa kunci dan atur ODPNETINSTALLED ke "1" jika ada. Saya tidak akan mengkompilasi dan menambahkan tindakan kustom ke penginstal di sini, tetapi cukup sederhana jika Anda menggunakan Votive di Visual Studio. Kode untuk tindakan kustom saya adalah:

using Microsoft.Deployment.WindowsInstaller;
using Microsoft.Win32;

namespace WiXCustomAction
{
  public class CustomActions
  {
    [CustomAction]
    public static ActionResult CheckOdpNetInstalled(Session xiSession)
    {
      xiSession.Log("Begin CheckOdpNetInstalled");

      RegistryKey lKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\ORACLE\ODP.Net");

      xiSession["ODPNETINSTALLED"] = lKey == null ? "0" : "1";

      return ActionResult.Success;
    }
  }
}

Sekarang Anda perlu mendaftar dan menjadwalkan tindakan, karena saya ingin peringatan itu muncul bersama dengan kondisi peluncuran saya yang lain, saya harus menambahkannya ke UI Pemasangan Elemen urutan:

<Binary Id="WiXCustomAction.dll" SourceFile="$(var.WiXCustomAction.TargetDir)$(var.WiXCustomAction.TargetName).CA.dll" />
<CustomAction Id="CheckOdpNet" BinaryKey="WiXCustomAction.dll" DllEntry="CheckOdpNetInstalled" Execute="immediate" />
<InstallUISequence>
  <Custom Action="CheckOdpNet" Before="LaunchConditions">NOT Installed</Custom>
</InstallUISequence>

Terakhir tambahkan kondisi peluncuran untuk memeriksa properti:

<Condition Message="!(loc.OracleOdpCondition)">
  Installed OR ODPNETINSTALLED="1"
</Condition>

Perhatikan bahwa saya percaya bahwa penjadwalan di InstallUISequence berarti tindakan khusus tidak akan diaktifkan selama pemasangan non-UI. Namun, penginstal saya harus menginstal UI sehingga tidak menjadi masalah bagi saya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbedaan antara Fungsi Tabel dan Fungsi Pipeline?

  2. Oracle Trigger ORA-04098:pemicu tidak valid dan validasi ulang gagal

  3. Cara Mengekspor Hasil Kueri ke File CSV di SQLcl (Oracle)

  4. Bagaimana saya bisa memilih dari daftar nilai di Oracle

  5. BUAT Prosedur Oracle