Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wix MSI如何确定卸载时删除哪个网站_Wix_Windows Installer_Uninstallation_Wix3.5 - Fatal编程技术网

Wix MSI如何确定卸载时删除哪个网站

Wix MSI如何确定卸载时删除哪个网站,wix,windows-installer,uninstallation,wix3.5,Wix,Windows Installer,Uninstallation,Wix3.5,我最近遇到了以下情况: 安装通过WiX创建的msi软件包,该软件包在IIS 6中部署文件并创建和配置网站 网站是手工修改的。端口从81更改为80。 软件包已卸载。 卸载包时,删除的网站不是部署的网站。相反,我看到它删除了默认网站以及其他一些网站 我想知道的是,软件包如何决定删除哪个网站?它显然不像我最初想象的那样是IIS ID。我们通过注册表项实现了这一点: <Property Id="INBOUNDGATEWAY_REGPATH" Value="SOFTWARE\MyCompan

我最近遇到了以下情况:

安装通过WiX创建的msi软件包,该软件包在IIS 6中部署文件并创建和配置网站 网站是手工修改的。端口从81更改为80。 软件包已卸载。 卸载包时,删除的网站不是部署的网站。相反,我看到它删除了默认网站以及其他一些网站


我想知道的是,软件包如何决定删除哪个网站?它显然不像我最初想象的那样是IIS ID。

我们通过注册表项实现了这一点:

    <Property Id="INBOUNDGATEWAY_REGPATH" Value="SOFTWARE\MyCompany\MyApp\$(var.VERSION)\InboundGateway" />

    <Property Id="INSTALLEDWEBSITE">
        <RegistrySearch Id="INSTALLEDWEBSITE" Root="HKLM" Key="[INBOUNDGATEWAY_REGPATH]" Name="WebSite" Type="raw" />
    </Property>

    <iis:WebSite Id='MyWebSite' SiteId='*' Description='[WEBSITENAME]' Directory='FOLDER_VDIR'>
        <iis:WebAddress Id='WebSiteAddress' Port='[WEBPORT]'/>
    </iis:WebSite>

    <Directory Id="TARGETDIR" Name="SourceDir">
    ...
                        <Component Id="CPNT_INBOUNDGATEWAY_REGISTRY" Guid="etc..." DiskId="1">
                            <RegistryValue Id="INBOUNDGATEWAY_REGISTRY_WEBSITE" Type="string" Root="HKLM" Key="[INBOUNDGATEWAY_REGPATH]" Name="WebSite" Value="[WEBSITENAME]">
                                <Permission User="[LOCADMINSGROUP]" GenericAll="yes" />
                                <Permission User="[POOL_IDENTITY_USER]" Read="yes" GenericRead="yes" />
                            </RegistryValue>

    <CustomAction Id="SetToInstalledWebSite" Property="WEBSITENAME" Value="[INSTALLEDWEBSITE]" />

    <InstallExecuteSequence>
        <Custom Action="SetToInstalledWebSite" After="SetWEBSITENAME">Installed And INSTALLEDWEBSITE</Custom>

我们通过注册表项实现了这一点:

    <Property Id="INBOUNDGATEWAY_REGPATH" Value="SOFTWARE\MyCompany\MyApp\$(var.VERSION)\InboundGateway" />

    <Property Id="INSTALLEDWEBSITE">
        <RegistrySearch Id="INSTALLEDWEBSITE" Root="HKLM" Key="[INBOUNDGATEWAY_REGPATH]" Name="WebSite" Type="raw" />
    </Property>

    <iis:WebSite Id='MyWebSite' SiteId='*' Description='[WEBSITENAME]' Directory='FOLDER_VDIR'>
        <iis:WebAddress Id='WebSiteAddress' Port='[WEBPORT]'/>
    </iis:WebSite>

    <Directory Id="TARGETDIR" Name="SourceDir">
    ...
                        <Component Id="CPNT_INBOUNDGATEWAY_REGISTRY" Guid="etc..." DiskId="1">
                            <RegistryValue Id="INBOUNDGATEWAY_REGISTRY_WEBSITE" Type="string" Root="HKLM" Key="[INBOUNDGATEWAY_REGPATH]" Name="WebSite" Value="[WEBSITENAME]">
                                <Permission User="[LOCADMINSGROUP]" GenericAll="yes" />
                                <Permission User="[POOL_IDENTITY_USER]" Read="yes" GenericRead="yes" />
                            </RegistryValue>

    <CustomAction Id="SetToInstalledWebSite" Property="WEBSITENAME" Value="[INSTALLEDWEBSITE]" />

    <InstallExecuteSequence>
        <Custom Action="SetToInstalledWebSite" After="SetWEBSITENAME">Installed And INSTALLEDWEBSITE</Custom>

我有一个类似的问题,我的解决方案是将网站名称存储在注册表中,并使用注册表搜索获取值并将其存储在属性中。如果卸载了软件包,网站将被正确删除。如果使用注册表,存储网站ID不是更好吗?或者,如果你让IIS决定你网站的ID,这是不可行的?没错,我正在存储ID和虚拟目录名,但Wix正在使用ID来安装/卸载。这里是Wix使用的元素:其中[WIXCUSTOM_IIS_WEBSITE]是存储网站id的属性。我有一个类似的问题,我的解决方案是将网站名称存储在注册表中,并使用注册表搜索获取值并将其存储在属性中。如果卸载了软件包,网站将被正确删除。如果使用注册表,存储网站ID不是更好吗?或者,如果你让IIS决定你网站的ID,这是不可行的?没错,我正在存储ID和虚拟目录名,但Wix正在使用ID来安装/卸载。这里是Wix使用的元素:其中[WIXCUSTOM_IIS_WEBSITE]是存储网站id的属性。