我有一个安装程序类,它在安装时从用户处获取了一个值。现在根据我的要求,如果提供的值不正确,我必须取消安装,但我没有得到如何获得这个。
这是我的installer.cs文件..
public override void Install(System.Collections.IDictionary stateSaver)
{
base.Install(stateSaver);
// Retrieve configuration settings
string targetSite = Context.Parameters["targetsite"];
string targetVDir = Context.Parameters["targetvdir"];
string targetDirectory = Context.Parameters["targetdir"];
string value = Context.Parameters["value"];
string connectionstring = Context.Parameters["db"];
if (targetSite == null)
throw new InstallException("IIS Site Name Not Specified!");
if (targetSite.StartsWith("/LM/"))
targetSite = targetSite.Substring(4);
if (connectionstring == null)
throw new InstallException("You did not specify a database to use!");
if (value.Equals("123"))
{
RegisterScriptMaps(targetSite, targetVDir);
ConfigureDatabase(targetSite, targetVDir, connectionstring);
}
else {
Rollback(stateSaver);
}
}
尽管Rollback(stateSaver);
我的设置已安装..
请帮帮我..
答案 0 :(得分:1)
只需调用InstallException即可进行回滚。这是通常的方式而且有效,所以如果它没有,那么其他东西正在发生。
您应该考虑使用其他工具,以便在输入数据时对其进行验证。 VS自定义操作始终在安装完所有文件后运行,因此基本上您需要安装整个应用程序然后再将其回滚,而不是使用MSI构建工具来验证何时输入。