首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wix的自定义操作未能调用vb脚本

Wix的自定义操作未能调用vb脚本
EN

Stack Overflow用户
提问于 2018-08-29 06:23:23
回答 2查看 894关注 0票数 0

包本身有一个VB脚本。我需要使用CMD调用它,这是调用脚本的默认方式,所以我尝试用CMD和CSCRIPT调用它,但是安装程序在安装时会引发错误。

我正在使用下面的代码,它不像预期的那样工作。我找了很多次,但没有找到解决办法。

代码语言:javascript
复制
<Binary Id="ServiceInstall"  SourceFile="..\..\..\AddVirDir.vbs" />

 <CustomAction Id="InstallService" BinaryKey ="ServiceInstall" 
               ExeCommand="CMD /C &quot;[#ServiceInstall]&quot;" 
               Execute="immediate" Return="check"  HideTarget="no" Impersonate="no"/>
EN

回答 2

Stack Overflow用户

发布于 2018-08-29 08:51:17

服务安装和控制:您不应该安装带有脚本的服务。在MSI中有一些内置的机制是非常优越的。您只需使用ServiceInstallServiceControl WiX XML元素,并“声明”应该如何注册服务,以及何时和如何启动和停止服务:

代码语言:javascript
复制
<Component>
   <File Source="$(var.SourceDir)\WindowsService.exe" />
   <ServiceInstall Name="MyService" ErrorControl="normal" Start="auto" Type="ownProcess" />
   <ServiceControl Id="MyService" Name="MyService" Start="install" Stop="both" Remove="uninstall" Wait="yes" />
</Component>

看!没有自定义操作!:-) -只是MSI自动魔术。没有必要为此使用任何自定义操作。如果您的服务可执行文件按预期的方式运行,MSI是功能齐全和可靠的。

如果上面的让我链接到github上的类似示例不清楚的话。它更完整,更详细。

VBScript:我是在看到您处理服务之前写的。我将把它加进去:要调用一个没有函数的脚本,您可以尝试如下所示:

代码语言:javascript
复制
<!-- The VBScript file -->
<Binary Id='Sample.vbs' SourceFile='Sample.vbs' />

<!-- The Custom Action -->
<CustomAction Id='Sample.vbs' VBScriptCall='' BinaryKey='Sample.vbs' 
              Execute='immediate' Return='ignore'/>

<!-- And Insert Into Installation Sequence -->
<InstallExecuteSequence>
    <Custom Action='Sample.vbs' After='AppSearch'/>
</InstallExecuteSequence>

这应该适用于这样的脚本(Sample.vbs -没有函数,只是一个隐式主函数):

代码语言:javascript
复制
MsgBox(Session.Property("ProductName"))

这里有一个关于VBScript自定义操作主题的答案:WIX安装程序从CustomAction执行vbscript

票数 1
EN

Stack Overflow用户

发布于 2018-08-29 20:31:16

WiX IIS元素:如果这是所有的 IIS ,我将尽可能避免脚本和自定义操作,并使用WiX的内置IIS元素。这是可在github.com上获得

寻找<iis:WebVirtualDir ... />等人。在这里找到WiX文档。我相信你应该能够完成你所需要的,而不需要太多的定制操作。

DISM.exe:Stropek自己在使用DISM.exe设置IIS的另一个示例源中使用自定义操作。不确定我是否会这样做(不过没有其他建议),但这是一个自定义操作和IIS的示例。

Need-For-Speed:有关您的安装性能问题。也许您需要禁止创建还原点并限制文件成本?引擎允许这个-参见下面的链接。不过,我怀疑它是否会非常有效。我想你的安装程序肯定有别的问题。超时问题?它可能与其他自定义操作、慢网络或其他问题有关。您能详细介绍一下部署场景吗?

无论如何,以下是一些有关加速MSI安装的一般文档。本质上,MSIFAS廷STALL属性是我推荐的唯一一个属性。DISABLEROLLBACK会引发真正的问题。

Logging:我通常建议安装开发人员启用默认详细的MSI日志记录 --如"Globally for all setups on a machine“部分所述,在需要时始终准备一个日志文件。它是为TEMP folder中的每个MSI操作使用一个随机名称创建的,您可以通过修改进行排序以获得最新的一个。日志文件可能会给出为什么安装速度慢的线索--只需确定到底发生了什么。抱歉,如果这只是显而易见的小事,而你已经设置好了。

手动日志文件创建

代码语言:javascript
复制
msiexec.exe /i C:\Path\Your.msi /L*v C:\Your.log

解释MSI日志:解释日志文件有时是很困难的。以下是一些帮助解决此问题的链接的答案

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52070744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档