带有自定义操作和InstallState文件的.net 2.0安装项目

时间:2012-08-28 06:12:33

标签: windows installer installation

在我的应用程序中,我有一个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数据库更改(创建数据库)。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我解决了自己的问题。自定义操作序列为

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

我将序列改为了 1)Windows服务1
2)Windows服务2
3)自定义动作dll

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