从我在WIX中制作的.MSI包中执行VBscript时遇到了一些问题。在尝试构建项目时,它会抛出2个错误:
未找到CustomAction元素的DllEntry,Error,ExeCommand,JScriptCall,Script,Value或VBScriptCall属性;其中一个是必需的。
和
CustomAction元素包含非法的内部文本:'Directory =“INSTALLFOLDER”
我不完全理解为什么会抛出这些错误。
我确实给它INSTALLFOLDER
作为目录,因为这是VBscript所在的位置,而第二个错误对我来说是未知的,因为我还不完全了解如何格式化ExeCommand
。
这是我使用的代码:
<Feature Id="ProductFeature" Title="wix_script_execution" Level="1">
<ComponentGroupRef Id="script"/>
</Feature>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="wix_script_execution" />
</Directory>
</Directory>
</Fragment>
<Fragment>
<ComponentGroup Id="script" Directory="INSTALLFOLDER">
<Component Id="InstallationScript" Guid="{AFA49EED-4F2C-42B4-B7EC-D3B7896C970C}">
<File Id="InstallationScript" KeyPath="yes" Source="C:\Users\fjansen\Documents\Visual Studio 2013\Projects\Wix test\Installation script\obj\Debug\Installation script.exe" />
</Component>
</ComponentGroup>
</Fragment>
<Fragment>
<CustomAction Id="RunInstallScript">
Directory="INSTALLFOLDER"
ExeCommand="[INSTALLFOLDER]Installation script.exe"
Execute="commit"
Return="ignore"/>
</CustomAction>
<InstallExecuteSequence>
<Custom Action="RunInstallScript" Before="InstallFinalize" />
</InstallExecuteSequence>
</Fragment>
其中包含自定义操作的片段是从互联网上复制并由我修改的,但显然不是以正确的方式。
最终目标是在将所有文件复制到目标文件后,此VBscript会自动运行。
VBscript只需要执行一次,不需要安装。
ADDED 7-7-2015:
我最终能够测试提议的信息。但是它仍然没有执行文件,编译项目时没有任何错误,因此我不清楚原因是什么。
这是我使用的代码中包含的建议:
<Fragment>
<CustomAction Id="RunInstallScript"
Directory="INSTALLFOLDER"
ExeCommand="[INSTALLFOLDER]Installation script.exe"
Execute="commit"
Return="ignore"
/>
<InstallExecuteSequence>
<Custom Action="RunInstallScript" Before="InstallFinalize" />
</InstallExecuteSequence>
</Fragment>
我认为问题与ExeCommand有关,因为它只是不执行脚本。我只是无法让它工作,我错过了什么?
提前感谢。
答案 0 :(得分:0)
<CustomAction Id="RunInstallScript"> Directory="INSTALLFOLDER" ExeCommand="[INSTALLFOLDER]Installation script.exe" Execute="commit" Return="ignore"/> </CustomAction>
>
后额外Id="RunInstallScript"
,因此您的属性(例如Directory=
)成为内部文字。如果删除该字符,那些错误就会消失。还有一个额外的结束标记 - 它应该是/>
或></CustomAction>
。最后,该自定义操作应如下所示:
<CustomAction Id="RunInstallScript"
Directory="INSTALLFOLDER"
ExeCommand="[INSTALLFOLDER]Installation script.exe"
Execute="commit"
Return="ignore"/>