Вам не нужно переходить на WiX, но вы можете сделать это, если в какой-то степени используете WiX.
Сначала вам нужно будет перенести код C # в Настраиваемое действие WiX..
Затем вы вставите это пользовательское действие в MSI, используя следующий код JScript:
var installer = WScript.CreateObject("WindowsInstaller.Installer");
var filespec = WScript.Arguments(0);
var msiOpenDatabaseModeTransact = 1;
var msiViewModifyAssign = 3;
var database = installer.OpenDatabase(filespec, msiOpenDatabaseModeTransact);
var sqlQuery = "SELECT `Name`,`Data` FROM Binary";
var view = database.OpenView(sqlQuery);
var record = installer.CreateRecord(2);
record.StringData(1) = "myAction";
view.Execute(record);
var binaryPath = WScript.ScriptFullName.replace(WScript.ScriptName, "SetupAction.CA.dll");
record.SetStream(2, binaryPath);
view.Modify(msiViewModifyAssign, record);
Execute("INSERT INTO `CustomAction` (`Action`, `Type`, `Source`, `Target`) VALUES ('myActionId', 1, 'myAction', 'MySimpleAction')");
Execute("INSERT INTO `InstallUISequence` (`Action`, `Sequence`) VALUES ('myActionId', 26)");
database.Commit();
function Execute(sql) {
view = database.OpenView(sql);
view.Execute();
view.Close();
}