如何更改NGen在WiX MSI包中运行时显示的文本

时间:2015-12-09 11:06:16

标签: wix ngen

我们在安装过程中使用NGen来优化应用程序的启动时间。

 static string connString = "Server=localhost;Port=5432;User Id=postgres;Password=xxx;Database=Information;";``

 using (NpgsqlConnection pgsqlConnection = new NpgsqlConnection(connString))
                {
                    // Open the PgSQL Connection.                  
                    pgsqlConnection.Open();

                    string insertCommand = "fnInsertRecord";

                    using (NpgsqlCommand pgsqlcommand = new NpgsqlCommand(insertCommand, pgsqlConnection))
                    {
                        using (NpgsqlTransaction tran = pgsqlConnection.BeginTransaction())
                        {
                            pgsqlcommand.CommandType = CommandType.StoredProcedure;

                            //pgsqlcommand.Parameters.Add(new NpgsqlParameter("playername", NpgsqlDbType.Varchar));
                            //pgsqlcommand.Parameters.Add(new NpgsqlParameter("age", NpgsqlDbType.Integer));
                            //pgsqlcommand.Parameters.Add(new NpgsqlParameter("belongsto", NpgsqlDbType.Varchar));
                            //pgsqlcommand.Parameters.Add(new NpgsqlParameter("salary", NpgsqlDbType.Integer));

                            pgsqlcommand.Parameters["p_PlayerName"].Value = PlayerName;
                            pgsqlcommand.Parameters["p_Salary"].Value = Age;
                            pgsqlcommand.Parameters["p_BelongsTo"].Value = BelongsTo;
                            pgsqlcommand.Parameters["p_Age"].Value = Salary;

                            pgsqlcommand.ExecuteNonQuery();

                            tran.Commit();
                        }
                    }
                }
            }
            catch (NpgsqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

在安装生成的MSI时,与其他步骤相比,“删除备份文件”的步骤花费了很长时间。深入研究,我们发现NGen正在运行。

我们怎样才能在那里写下其他内容,例如“我们现在为您在应用程序的每次启动时节省大量时间”?

2 个答案:

答案 0 :(得分:3)

这已作为功能请求here进行了讨论。您可以按照here所述将ngen活动移至后台。

另一个选项是通过替换 InstallFinalize 操作的操作文本来更改“删除备份文件”标签的文本:

<UI>
  <ProgressText Action="InstallFinalize">Speeding up your application beforehand :)</ProgressText>
</UI>

答案 1 :(得分:3)

实际上有更好的方法,因为在NetFx WiX扩展中有两个动作NetFxExecuteNativeImageCommitInstall(在启用回滚的情况下调用)和NetFxExecuteNativeImageInstall(在禁用回滚的情况下)。

<UI>
    <ProgressText Action="NetFxExecuteNativeImageInstall">Speeding up your application</ProgressText>
</UI>
<InstallExecuteSequence>
    <Custom Action="NetFxExecuteNativeImageCommitInstall" After="NetFxExecuteNativeImageUninstall">0</Custom>
    <Custom Action="NetFxExecuteNativeImageInstall" After="NetFxExecuteNativeImageCommitInstall" />
</InstallExecuteSequence>