在我的应用程序中,我有一个windows窗体应用程序和两个windows服务。目前,我正在使用.net安装项目来安装应用程序和windows服务。我添加了自定义操作,它打开windows窗体并接受server,以便为应用程序创建SQL数据库。
如果用户关闭或单击窗体上的“取消设置”向导上的“取消”按钮,则引发InstallException。
我面临的问题是,在使用InstallException取消安装向导后,会出现“错误1001。无法找到文件'C:\Program (X86)\MyApp\MyService1.InstallState‘”。为我的两个窗口服务一个接一个。
作为临时解决方案,我保留了两个InstallState文件,并在安装项目中手动添加了这两个InstallState文件到安装目录中。
成功了几个月。但是,在应用程序进行了一些更改后,它开始给我一些其他错误"Error 1001.对象类型找不到元素ArrayOfKeyValueOfanyTypeanyType System.Collections.Hashtable“。
我发现它需要再次为更改添加新的InstallState文件。
我认为这不是手动添加InstallState文件的正确方法。在我的安装项目中还有其他的想法来解决这个问题吗?
我需要回滚SQL数据库更改(创建数据库),如果用户在安装时取消安装向导,如果用户取消卸载向导,则不应该删除数据库。
提前谢谢。
发布于 2012-08-31 02:06:06
我自己解决了这个问题。自定义动作序列是
1)自定义操作dll
2)Windows服务1
3)Windows服务2
我把顺序改为
1)Windows Service 1
2)Windows服务2
3)自定义动作dll
我认为它试图回滚windows服务状态,而windows服务在第一种情况下没有安装。
https://stackoverflow.com/questions/12153653
复制