InstallShield 项目的 Stylecop

Stylecop for InstallShield project

我需要确保 InstallShield 只允许设置。我想 运行 在 CI 服务器上进行此检查。

换句话说 Component table 我想检查 Attributes 字段只允许值(<td>8</td><td>1</td>

<table name="Component">
    <col key="yes" def="s72">Component</col>
    <col def="S38">ComponentId</col>
    <col def="s72">Directory_</col>
    <col def="i2">Attributes</col>
    <col def="S255">Condition</col>
    <col def="S72">KeyPath</col>
    <col def="I4">ISAttributes</col>
    <col def="S255">ISComments</col>
    <col def="S255">ISScanAtBuildFile</col>
    <col def="S255">ISRegFileToMergeAtBuild</col>
    <col def="S0">ISDotNetInstallerArgsInstall</col>
    <col def="S0">ISDotNetInstallerArgsCommit</col>
    <col def="S0">ISDotNetInstallerArgsUninstall</col>
    <col def="S0">ISDotNetInstallerArgsRollback</col>
        <row>
            <td>Adapter</td>
            <td>{05A86BD3-38F8-40CC-8A16-AB643A555787}</td>
            <td>ADAPTER</td>
            <td>8</td>
            <td/>
            <td>adapter.dll</td>
            <td>1</td>
            <td/>
            <td/>
            <td/>
            <td>/LogFile=</td>
            <td>/LogFile=</td>
            <td>/LogFile=</td>
            <td>/LogFile=</td>
        </row>

直接的方法是创建 PowerShell 脚本来将项目文件解析为 XML,找到相应的值,并确保它们在允许的范围内。

是否有更多优雅 方法来做到这一点,比如类似于 StyleCop 的工具?由于自定义 PowerShell 脚本单独支持的成本很高。

感谢 Steve 的评论,我得到了工作 PowerShell 版本,无需手动解析 InstallShield 项目文件。

使用 Automation Interface 检查组件的错误配置非常容易。

$projectFile = "project.ism"

$project = new-object -comobject IswiAuto16.ISWiProject

$project.OpenProject($projectFile)

Foreach ($feature in $project.ISWiFeatures)
{
    Foreach ($component in $feature.ISWiComponents)
    {
        if(<check $component  for an errorneous config>)
        {
            <report an issue here>
        }
    }
}

$project.CloseProject()