我们在安装过程中使用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正在运行。
我们怎样才能在那里写下其他内容,例如“我们现在为您在应用程序的每次启动时节省大量时间”?
答案 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>