首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用WixSharp的IniFileSearch

使用WixSharp的IniFileSearch
EN

Stack Overflow用户
提问于 2015-09-23 07:42:13
回答 1查看 474关注 0票数 2

我对Wix和WixSharp都是新手。我最近学习了Wix,并用它创建了一个基本的安装程序。我使用的一个属性是'IniFileSearch‘,它帮助我从IniFile中搜索值,并使用它来查找我的文件的安装位置。我正在尝试使用WixSharp来做同样的事情,但似乎找不到一个等效的方法。在WixSharp中我能找到的最接近的是'AppSearch‘类(在WixSharp.CommonTasks下面)。从Wix我知道'AppSearch‘是一个存储搜索任务的微星数据库表。“IniFileSearch”就是这些搜索之一。我甚至不确定WixSharp库中的'AppSearch‘类是否直接映射到'AppSearch’MSI数据库表。无论如何,我的目标是在WixSharp库中找到与“IniFileSearch”等效的方法。如果有人知道这一点,举个例子就好了。

以下是Wix标记中的示例IniFileSearch

代码语言:javascript
复制
<Property Id="MY_PROPERTY">
 <IniFileSearch Id="myIniSearch"
                Name="myConfigFile.ini"
                Section="section1"
                Key="name"
                Type="raw" />
</Property>
EN

回答 1

Stack Overflow用户

发布于 2015-09-25 00:49:16

这是我从WixSharp的创建者奥列格·希罗那里得到的答案。

因为Wix#做很多不同的事情,所以像"MSI IniFileSearch属性“这样的任务与Wix#的故事几乎是无关的。无论如何,就Wix#而言,RegValueProperty是它本机支持的唯一微星"AppSearch“任务。相反,Wix#允许您指定一个C#例程,您可以在该例程中执行任何搜索/分析,而不受MSI功能的约束。

因此,在托管CA中,您可以使用您选择的任何C#算法读取reg文件,并且只需根据需要更新会话属性:

代码语言:javascript
复制
public class CustomActions
{
    [CustomAction]
    public static ActionResult MyAction(Session session)
    {
        session["EnvVersion"] = AppSearch.IniFileValue(Environment.ExpandEnvironmentVariables(@"%windir%\win.ini"),
                                                       "System",
                                                       "Version");
    }
}

在上面的代码中,我使用了Wix#已经实现的IniFileValue查找例程,但是您可以使用任何替代实现。甚至互操作GetProfileString(...)。

如果使用托管安装程序,则需要将操作放在UIInitialized (或/和Load)事件处理程序中:

代码语言:javascript
复制
project.UIInitialized += project_UIInit;
...
static void project_UIInit(SetupEventArgs e)
{
    e.Session["EnvVersion"] = AppSearch.IniFileValue(Environment.ExpandEnvironmentVariables("%windir%\\config.ini"),
                                                     "System",
                                                     "Version") ?? "<unknown>"; 
}  

请记住,IniFileValue是最近才添加的,因此目前您只能从NuGet获得预发行包:

代码语言:javascript
复制
Install-Package WixSharp.bin -Version 1.0.26
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32728798

复制
相关文章

相似问题

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