MSI
Visual Studioのセットアッププロジェクトで生成されるMSIについて、
アンインストールできないようにするには、MSIのデータベースを弄る必要がある。
Orcaでできるけど、毎回するのは面倒なので、スクリプトをビルド後に設定し、実行させる。
Option Explicit Const msiOpenDatabaseModeTransact = 1 Dim msiPath : msiPath = Wscript.Arguments(0) Dim installer Set installer = Wscript.CreateObject("WindowsInstaller.Installer") Dim database Set database = installer.OpenDatabase(msiPath, msiOpenDatabaseModeTransact) Dim query query = "INSERT INTO Property(Property, Value) VALUES('ARPNOREMOVE', '1')" Dim view Set view = database.OpenView(query) view.Execute database.Commit
なお、queryを変えるといろいろできます。
query = "INSERT INTO Property(Property, Value) VALUES('ARPNOMODIFY', '1')"
これだと、コンパネの追加/削除で、変更が使えなくなる
query = "INSERT INTO Property(Property, Value) VALUES('ARPNOREPAIR', '1')"
これだと、コンパネの追加/削除で、修復が使えなくなる
query = "INSERT INTO Property(Property, Value) VALUES('ARPSYSTEMCOMPONENT', '1')"
これだと、コンパネの追加/削除に表示されなくなる