我正在尝试使用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]似乎适用于除争论中最后一行之外的所有其他内容。
提前致谢
答案 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 =""[INSTALLFOLDER]FileToLoad.xml""/>
它会导致"c:\program files\your app\FileToLoad.xml"
,命令行解析器会将其识别为单个参数。注意"
字符实体引用,有关完整列表,请参阅List of XML and HTML character entity references。