【问题标题】:How to create an MSI package that installs no files and only executes some commands using Wix如何创建一个不安装文件而只使用 Wix 执行一些命令的 MSI 包
【发布时间】:2010-05-26 17:36:33
【问题描述】:

我正在尝试创建一个使用 AppCmd 应用程序配置 IIS7 的 MSI 包。它只需要执行一些调用 AppCmd 的命令。安装时需要调用一些命令,卸载时需要调用其他命令。

这是我现在拥有的:

我有一个指向 AppCmd 的属性:

<Property Id="APPCMD" Value="C:\Windows\system32\inetsrv\appcmd.exe" />

我有我的自定义操作:

<CustomAction Id="UnlockHandlerSection" Return="check" Property="APPCMD" ExeCommand="unlock config /section:system.webServer/handlers" />

我有调用动作的自定义元素:

<InstallExecuteSequence>
    <Custom Action="UnlockHandlerSection" After="InstallFiles">NOT Installed AND NOT PATCH</Custom>
<InstallExecuteSequence>

问题在于,当我尝试安装生成的 MSI 包时,没有调用这些命令。如果我记录安装,则日志本身并没有很多信息。我不想发布整件事,但它的结尾是这样的:

MSI (c) (50:34) [12:35:47:703]: Product: Server Configuration 1.0.0 -- Installation failed.
MSI (c) (50:34) [12:35:47:703]: Windows Installer installed the product. Product Name: Server Configuration 1.0.0. Product Version: 1.0.0. Product Language: 1033. Installation success or error status: 1603.

另外,就在我的 APPCMD 属性初始化之前,这是打印的(这里的返回值是否正确?):

Action ended 12:35:47: ExecuteAction. Return value 3.
Action ended 12:35:47: INSTALL. Return value 3.
Property(C): APPCMD = C:\Windows\system32\inetsrv\appcmd.exe

谁能告诉我我做错了什么?谢谢!

【问题讨论】:

  • 您在调试日志中看到了什么? msiexec /i your-installer.msi /l* debug.log
  • 我已经用这些信息更新了我的问题。如果您认为更多日志信息可能会有所帮助,请告诉我您希望看到的内容。
  • 一般来说,从您的 CustomAction 开始到结束的部分(即在日志文件中查找 UnlockHandlerSection),以及导致第一个 Return value 3 的任何诊断行是最有用。最后一个Return value 3只是一个总结。

标签: wix windows-installer


【解决方案1】:

解决方案是添加一个空组件:

<Directory Id="TARGETDIR" Name="SourceDir">
    <Component Id="EmptyComponent" Guid="*" />
</Directory>

下一步是将该空组件包含在功能中:

<Feature Id="Feature" Title="Feature" Level="1">
    <ComponentRef Id="EmptyComponent" />
</Feature>

加上这两位后,命令调用正确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多