0

在我的应用程序中,我有一个 Windows 窗体应用程序和两个 Windows 服务。目前我正在使用 .net 安装项目来安装应用程序和 Windows 服务。我添加了自定义操作,它打开 Windows 窗体并接受 SQL 服务器详细信息来为应用程序创建 SQL 数据库。 如果用户关闭或单击表单上的取消按钮以取消设置向导,
我将引发InstallException 。
我面临的问题是在使用 InstallException 取消设置向导后,它给出了错误“错误 1001。找不到文件'C:\Program Files (x86)\MyApp\MyService1.InstallState'。” 为我的两个 Windows 服务一个一个。
对于临时解决方案,我保留了两个 InstallState 文件并在我的安装项目中手动添加,这将两个 InstallState 文件添加到安装目录中。
它工作了几个月。但是在应用程序进行了一些更改之后,它开始给我一些其他错误“错误 1001。找不到元素 ArrayOfKeyValueOfanyTypeanyType System.Collections.Hashtable 的对象类型”
我发现它需要再次添加新的 InstallState 文件以进行更改。

我认为这不是手动添加 InstallState 文件的正确方法。在我的设置项目中是否有其他想法可以解决这个问题?

如果用户在安装时取消安装向导并且如果用户取消卸载向导它不应该删除数据库,我需要回滚 SQL 数据库更改(创建数据库)。

提前致谢。

4

1 回答 1

0

我自己解决了这个问题。自定义操作序列是

1)自定义操作 dll
2)Windows 服务 1
3)Windows 服务 2

我将顺序更改为
1)Windows 服务 1
2)Windows 服务 2
3)自定义操作 dll

我认为它试图回滚 Windows 服务状态并且在第一种情况下没有安装 Windows 服务

于 2012-08-31T10:06:06.640 回答