在我的应用程序中,我有一个Windows窗体应用程序和两个Windows服务。目前我正在使用.net安装项目来安装应用程序和Windows服务。我添加了自定义操作,打开Windows窗体并接受SQL服务器详细信息为应用程序创建SQL数据库。
如果用户关闭或单击表单上的取消按钮取消设置向导,我将提高 InstallException 。
我面临的问题是在使用InstallException取消安装向导后,它会出现错误“错误1001.无法找到文件'C:\ Program Files(x86)\ MyApp \ MyService1.InstallState'。”为我的两个窗口服务一个接一个。
对于临时解决方案,我保留了InstallState文件并在我的安装项目中手动添加,该项目将InstallState文件添加到安装目录。
它工作了几个月。但是在应用程序发生一些变化后,它开始给我一些其他错误“错误1001.找不到元素ArrayOfKeyValueOfanyTypeanyType System.Collections.Hashtable的对象类型”
我发现它需要再次添加新的InstallState文件以进行更改。
我认为这不是手动添加InstallState文件的正确方法。
有没有其他想法在我的安装项目中实现以克服这个问题?
如果用户在安装时取消安装向导,并且如果用户取消卸载向导则不应删除数据库,我需要回滚SQL数据库更改(创建数据库)。
提前致谢。
答案 0 :(得分:0)
我解决了自己的问题。自定义操作序列为
1)自定义动作dll
2)Windows服务1
3)Windows服务2
我将序列改为了
1)Windows服务1
2)Windows服务2
3)自定义动作dll
我认为它试图回滚Windows服务状态并且第一种情况下未安装Windows服务