0

在所有文件都放在目标机器上之后,我正在尝试运行可执行的 VBscript (.EXE)。正在使用的安装程序是在 Visual Studio 2013 中使用 WIX 工具集制作的。我尝试了几个来自不同来源的例子,比如 technet 和这个网站。但是没有人能帮助我,因为很多这些文章/帖子都是从 2008 年左右开始的,似乎不再适用。

目前我正在使用这段代码来尝试实现我的目标:

     <Fragment>
    <CustomAction
      Id="RunInstallScript"
      Directory="INSTALLFOLDER"
      ExeCommand="[INSTALLFOLDER]Installation script.exe"
      Execute="commit"
      Return="ignore"
    />
    <InstallExecuteSequence>
    <Custom Action="RunInstallScript" Before="InstallFinalize" />
  </InstallExecuteSequence>
  </Fragment>

即使编译器没有看到任何错误并且编译得很好,代码也无法正常工作。需要执行的文件放在安装文件夹中,所以文件是存在的。唯一剩下的就是在安装和/或卸载期间执行一次。

我已经搜索了很长时间的信息以便弄清楚,但我无法让它按照我想要的方式工作。如果这个问题得到解决,我最终将拥有一个功能齐全的安装程序,我可以部署它来简化控制面板的设置。

欢迎所有帮助和建议。

提前致谢,

4

1 回答 1

0

我弄清楚了问题所在。似乎自定义操作的声明和调用需要与添加文件功能在同一个片段中。所以它看起来像这样:

    <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\bin\Debug\InstallationScript.exe" />
      </Component>
    </ComponentGroup>

    <CustomAction
      Id="InstallScript"
      Directory="INSTALLFOLDER"
      ExeCommand="[INSTALLFOLDER]InstallationScript.exe"
      Execute="commit"
      Return="check">
    </CustomAction>
    <InstallExecuteSequence>
      <Custom Action="InstallScript" Before="InstallFinalize" />
    </InstallExecuteSequence>

  </Fragment>

最终只是一个小错误,很难找到问题所在。我希望这个例子能帮助人们解决同样的问题,并为他们节省大量时间来找出问题所在。

于 2015-08-03T07:26:54.167 回答