我正在尝试为 Windows 服务创建一个安装项目。我已按照以下指示进行操作http://support.microsoft.com/kb/816169 http://support.microsoft.com/kb/816169轻松创建安装项目。
我希望能够在安装过程中获取一个值,以便使用用户所需的设置更新 app.config。我添加了一个文本框 (A)对话框来检索值。我设置了编辑1属性属性为“TIMETORUN”,并在我的主要输出操作中自定义操作数据我放入以下属性:/TimeToRun="[TIMETORUN]\"。到目前为止,一切都很好。运行设置我可以检索运行时间值来自上下文参数收藏无问题。
为了找到 app.config 我还需要传入目标目录我的自定义操作的 Windows Installer 属性。这就是事情开始崩溃的地方。为了达到这个目的,上面自定义操作数据必须像这样改变:/TimeToRun="[TIMETORUN]\" /TargetDir="[TARGETDIR]\"。现在,当我运行安装程序时,我收到以下错误消息:
错误 1001。初始化安装时发生异常。
System.IO.FileNotFoundException:无法加载文件或程序集“file:///C:\Windows\SysWOW64\Files”或其依赖项之一。系统不能
找到指定的文件。
如果你用谷歌搜索这个问题,你将不可避免地发现人们通过简单地将尾部斜杠添加到/TargetDir="[TARGETDIR]\"的一部分自定义操作数据。不幸的是,这并不能解决我的问题。
我尝试了很多不同的变体自定义操作数据字符串,但没有一个起作用。我尝试从我的覆盖中记录到文件Install方法来确定损坏的位置,但没有创建日志文件,因为它甚至没有达到那么远。正如错误所示,故障发生在初始化步骤期间。
我有预感,它可能是安装项目尝试加载的依赖项之一。也许不知何故,某些东西被附加到自定义操作数据弦并且不能很好地演奏目标目录值(包含空格,即“C:\Program Files\My Company\Project Name”)。同样,这是我似乎无法确认的另一个预感,因为我无法调试设置过程。
还要提一下,是的,这是另一种预感,这可能是 64 位版本 Windows 上的安装项目的问题吗?我运行的是 Windows 7 专业版。
我将提供依赖项的名称,以防有帮助:
- 微软.NET框架
- Microsoft.SqlServer.DtsMsg.dll
- Microsoft.SqlServer.DTSPipelineWrap.dll
- Microsoft.SqlServer.DTSRuntimeWrap.dll
- Microsoft.SQLServer.ManagedDTS.dll
- Microsoft.SqlServer.msxml6_interop.dll
- Microsoft.SqlServer.PipelineHost.dll
- Microsoft.SqlServer.SqlTDiagM.dll
您可以从依赖项中了解到,Windows 服务正在安排对 DTSX 包的调用。
抱歉长篇大论。感谢您的任何帮助,您可以提供。
答案是如此简单得令人发狂。如果最后一个参数CustomActionData
将包含空格,因此您必须用引号和尾部斜杠将其括起来,尾部斜杠后面还必须有一个空格,如下所示:
/TimeToRun="[TIMETORUN]\" /TargetDir="[TARGETDIR]\ "
解决方案和解释可以找到here http://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/4c71d619-5322-4734-89f3-5c1997e42b93/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)