首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >System.IO.FileInfo在WIX中使用时向路径添加意外字符串

System.IO.FileInfo在WIX中使用时向路径添加意外字符串
EN

Stack Overflow用户
提问于 2019-04-01 13:02:16
回答 1查看 451关注 0票数 2

我有一个WIX(V3.11.1)安装程序,在该程序中,我将根据传递给自定义操作的值创建一个FileInfo。传递给自定义操作的值是正确的,session.CustomActionData["INSTALLFOLDER"]返回正确的路径,即C:\Program Files(x86)\MyApplication

不幸的是,当我创建FileInfo targetDir = new FileInfo(session.CustomActionData["INSTALLFOLDER"])时,targetDir.FullName的结果是C:\Windows\Installer\MSIE335.tmp-\C:\Program Files(x86)\MyApplication\

我试图找到关于FileInfo构造函数如何工作的任何信息,但是没有任何结果。您是否知道为什么C:\Windows\Installer\MSIE335.tmp-\出现在FileInfo中,以及如何使用真正的路径创建它?

用于检查所有值的代码:

代码语言:javascript
运行
复制
string path = session.CustomActionData["INSTALLFOLDER"];

session.Log(path); //result is C:\Program Files(x86)\MyApplication
FileInfo targetDir = new FileInfo(path);

session.Log(targetDir.FullName); // result is C:\Windows\Installer\MSIE335.tmp-\C:\Program Files(x86)\MyApplication\
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-01 14:22:46

我的设置感觉是猜测INSTALLFOLDER在您的CustomActionData中的值实际上是[INSTALLFOLDER]值。在日志记录时,该语法将被解析为其适当的值。这就是它看起来不错的原因。但是,FileInfo实际得到的值如下:

代码语言:javascript
运行
复制
FileInfo targetDir = new FileInfo("[INSTALLFOLDER]");

当然,它是“当前目录中名为"INSTALLFOLDER”的文件“。与您的第二条日志行相匹配。

修复方法是确保在您的中传递 INSTALLFOLDERINSTALLFOLDER值。根据计划延迟自定义操作和设置命名属性的方式,有几种不同的方法可以做到这一点。例如,使用SetProperty应该是修复它的简单方法。

更新: Hawex提供了定义自定义操作的代码片段。看上去:

代码语言:javascript
运行
复制
<Property Id="CustomActionOnInstall" Value="INSTALLFOLDER=[INSTALLFOLDER]" />

<CustomAction Id="CustomActionOnInstall" BinaryKey="CustomActions" Execute="deferred" 
              Impersonate="no"  DllEntry="OnInstall" Return="check" />
<InstallExecuteSequence>
  <Custom Action="CustomActionOnInstall" Before="InstallFinalize">NOT Installed</Custom>      
</InstallExecuteSequence>

要修复,只需将静态(未评估) Property更改为SetProperty,如下所示:

代码语言:javascript
运行
复制
<SetProperty Id="CustomActionOnInstall" Value="INSTALLFOLDER=[INSTALLFOLDER]"
             Before="CustomActionOnInstall" Sequence="execute" />
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55455799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档