Wix安装位置错误地显示为命令行参数

时间:2015-07-14 08:12:55

标签: directory wix install command-line-arguments

我正在尝试使用wix创建一个安装程序,我希望它的行为方式使得当选择快捷方式时,它会将安装文件传递给我的程序args [],以便它使用路径执行文件。 但是,我添加了一些日志,并注意到由于某种原因它接收的路径是“C:\ Program”。即使我手动将参数设置为完整路径,我也不能以不同的方式显示它。这是.wxs文件的一些片段。

<!-- Define directory structure -->
    <Directory Id ="TARGETDIR" Name ="SourceDir">
        <Directory Id ="ProgramFilesFolder">
            <Directory Id ="MyAppsFolder" Name ="Applications">
                <Directory Id ="INSTALLFOLDER" Name ="MyApp">
                </Directory>
                <Directory Id ="ProgramMenuFolder">
                    <Directory Id ="ApplicationProgramsFolder" Name="Example Folder">
                        <Directory Id ="ShortcutFolder" Name ="MyApp">
                        </Directory>
                    </Directory>
                </Directory>
            </Directory>
        </Directory>
    </Directory>

<!-- Creating the shortcut -->
    <DirectoryRef Id ="ShortcutFolder">
        <Component Id ="ApplicationShortcut" Guid="{GUID_HERE}">
            <Shortcut Id ="RunMyApp"
                                Name ="MyApp"
                                Description ="Runs MyApp"
                                Target ="[INSTALLFOLDER]MyApp.exe"
                                WorkingDirectory ="INSTALLFOLDER"
                                Icon ="MyApp.ico"
                                Arguments ="[INSTALLFOLDER]FileToLoad.xml"/>

[INSTALLFOLDER]似乎适用于除争论中最后一行之外的所有其他内容。

提前致谢

2 个答案:

答案 0 :(得分:0)

我发现通过删除[INSTALLFOLDER],它工作得很好。该行现在看起来像这样:

Arguments ="[INSTALLFOLDER]FileToLoad.xml"/>

我注意到这可能是因为工作目录已经设置为INSTALLFOLDER,虽然我不确定。

答案 1 :(得分:0)

这是一个众所周知的行为,WiX并不知道你的论点是什么,然后它没有引用它们。请注意,[INSTALLFOLDER]将在安装期间扩展为(例如)c:\program files\your app,就像您使用以下语法从命令行执行应用程序一样:

MyApp c:\program files\your app

请注意,您的应用会有{ "c:\\program", "files\\your", "app" }

明确引用你的路径:

<Shortcut Id ="RunMyApp"
    Name ="MyApp"
    Description ="Runs MyApp"
    Target ="[INSTALLFOLDER]MyApp.exe"
    WorkingDirectory ="INSTALLFOLDER"
    Icon ="MyApp.ico"
    Arguments ="&quot;[INSTALLFOLDER]FileToLoad.xml&quot;"/>

它会导致"c:\program files\your app\FileToLoad.xml",命令行解析器会将其识别为单个参数。注意&quot;字符实体引用,有关完整列表,请参阅List of XML and HTML character entity references