【问题标题】:IIS website physical path becomes blank on wix uninstallIIS网站物理路径在wix卸载时变为空白
【发布时间】:2011-01-18 15:58:40
【问题描述】:

背景:我有一个 Wix 安装程序,其中在现有 IIS 网站中创建了一个虚拟目录。虚拟目录已创建(安装前不存在),但 IIS 网站应已创建(用户只需在 ListBox 中选择要安装的网站)。

问题:卸载时,安装到的 IIS 网站的物理路径变为空白,该属性没有值。下面是我的主要 wix 文件的精简版本。我不确定为什么卸载会影响 IIS 网站,但欢迎提出任何想法。

注意:我使用的是 Wix 3.5 和 Windows Server 2008 R2、IIS 7。

<Product>

    <Property Id='WEBSITE_DESCRIPTION'>
      <RegistrySearch Id='RememberPropertyWEBSITE_DESCRIPTION' Root='HKCU'
        Key='SOFTWARE\Company\Product' Name='InstalledWebsiteDescription'
        Type='raw' />
    </Property>

    <Property Id='WEBSITE_PORT'>
      <RegistrySearch Id='RememberPropertyWEBSITE_PORT' Root='HKCU'
        Key='SOFTWARE\Company\Product' Name='InstalledWebsitePort'
        Type='raw' />
    </Property>


    <Component Id='PropertiesToSave' Directory='ApplicationFolder'>
      <RegistryValue Root='HKCU' Key='SOFTWARE\Company\Product'
        Name='InstalledWebsiteDescription' Value='[WEBSITE_DESCRIPTION]'
        Type='string' />
      <RegistryValue Root='HKCU' Key='SOFTWARE\Company\Product'
        Name='InstalledWebsitePort' Value='[WEBSITE_PORT]'
        Type='string' />

      <RemoveFolder Id='CleanupApplicationFolder' On='uninstall' />
    </Component>


    <Directory Id='TARGETDIR' Name='SourceDir'>
      <Component Id='TestWebVirtualDirComponent' Guid='12345678-6304-410E-A808-E3585379EADB'>
        <CreateFolder />
        <iis:WebVirtualDir Id='TestWebVirtualDir' Alias='[WEBSITE_VIRTUALDIR]' Directory='TARGETDIR' WebSite='MyWebsite'>
          <iis:WebApplication Id='TestWebApplication' Name='Test' />
        </iis:WebVirtualDir>
      </Component>
    </Directory>

    <iis:WebSite Id="MyWebsite" Description="[WEBSITE_DESCRIPTION]" SiteId="*">
      <iis:WebAddress Id="AllUnassigned" Port="[WEBSITE_PORT]" />
    </iis:WebSite>

    <Feature>
      <ComponentRef Id='TestWebVirtualDirComponent'/>
      <ComponentRef Id='PropertiesToSave'/>
    </Feature>
</Product>

【问题讨论】:

  • 我也使用 WIX(在我的情况下为 3.0)进行与 IIS 相关的安装,但我发现了一些意外和故障。在某些情况下,我不得不求助于自定义操作以使其按预期工作。

标签: iis iis-7 wix wix3.5


【解决方案1】:

WiX IIsExtension 通过子 WebAddress 元素的描述属性和端口属性识别 WebSite。因此,当您安装应用程序时,您需要以某种方式设置 WEBSITE_DESCRIPTION 和 WEBSITE_PORT。但是,当您运行卸载时,没有设置提到的属性,并且您会得到您描述的行为。

解决方案是将所需的属性值保存到系统注册表并使用RegistrySearch 元素读取值并设置适当的属性。这被称为“记住属性”模式,Rob Mensching here 完美地解释了这一点。

【讨论】:

  • 嗨燕。我实际上正在这样做,我已经修改了上面的代码示例以显示我在做什么。 “修复”按预期工作,我必须在“卸载”时做一些事情吗?
  • 根据您的示例,我想您希望在卸载时删除虚拟目录。如果这是真的,您还应该“记住” WEBSITE_VIRTUALDIR 属性。除此之外,它看起来并不可疑并且应该可以工作。您在卸载时遇到任何特定错误吗?还是只是把虚拟目录留在那里?
  • 嗨,严,是的,这就是问题所在。正确保存虚拟目录使宇宙中的一切正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-10
  • 2011-04-25
  • 1970-01-01
  • 1970-01-01
  • 2012-08-24
  • 1970-01-01
相关资源
最近更新 更多