tabctl32.msm WiX 安装时没有注册 ocx
tabctl32.msm installed by WiX does not register the ocx
我正在将旧的 VB6 应用程序从 InstallShield 移动到由 Visual Studio WiX 项目驱动的 WiX 安装程序。一切都很好,只是我需要 tabctl32.msm 的 Microsoft 选项卡控件。当我将其包含在我的 WiX 项目中时,OCX 会安装但无法工作,直到我在其上 运行 regsvr32。
使用 InstallShield 或 Visual Studio 安装程序,msm 正确注册了它的组件。我假设那是 msm 的工作。
我正在以管理员身份安装每台机器和 msi 运行s。下面是一些说明问题的简化 WiX 代码:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="TabCtlTest" Language="1033" Version="1.0.0.0" Manufacturer="A Company" UpgradeCode="bd70911b-976f-462d-b381-26bc4dc0758e">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate EmbedCab="yes" />
<Feature Id="ProductFeature" Title="TabCtlTest" Level="1">
<ComponentGroupRef Id="ProductComponents" />
<MergeRef Id="TABCTL32"/>
<MergeRef Id="COMCAT"/>
<MergeRef Id="OLEAUT32"/>
</Feature>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Merge Id="TABCTL32" SourceFile="$(env.ProgramFiles)\Common Files\Merge Modules\TABCTL32.MSM" Language="1033" DiskId="1" />
<Merge Id="COMCAT" SourceFile="$(env.ProgramFiles)\Common Files\Merge Modules\COMCAT.MSM" Language="1033" DiskId="1" />
<Merge Id="OLEAUT32" SourceFile="$(env.ProgramFiles)\Common Files\Merge Modules\OLEAUT32.MSM" Language="1033" DiskId="1" />
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="TabCtlTest" />
</Directory>
</Directory>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<Component Id="cmp59A149A53D5CFB2D09E03E213D57D2E4" Guid="{BA66D5C5-0813-4822-9F40-8E5C9B242E8B}">
<File Id="fil36DDAE6925146DA614B90C0E87BD68AC" KeyPath="yes" Source="..\vbprog\Project1.exe" />
</Component>
</ComponentGroup>
</Fragment>
</Wix>
我正在使用 Visual Studio 2015 和 WiX 3.9。
在使用 Orca 仔细研究了不同的 msi 之后,我发现了一些缺失的项目。当我添加
<InstallExecuteSequence>
<RegisterClassInfo Sequence="4200" />
<RegisterProgIdInfo Sequence="4300" />
<WriteRegistryValues Sequence="4400" />
</InstallExecuteSequence>
到产品节点,它导致 COM 注册发生。似乎 InstallShield 和 Visual Studio Installer 会自动执行此操作,但是,就像很多事情一样,要使用 WiX 执行此操作,您必须深入研究并自己弄清楚。不,我不知道这些序列号应该是什么。在比较了 Orca 显示器后,我把它们从我的帽子里拿出来了。
我正在将旧的 VB6 应用程序从 InstallShield 移动到由 Visual Studio WiX 项目驱动的 WiX 安装程序。一切都很好,只是我需要 tabctl32.msm 的 Microsoft 选项卡控件。当我将其包含在我的 WiX 项目中时,OCX 会安装但无法工作,直到我在其上 运行 regsvr32。
使用 InstallShield 或 Visual Studio 安装程序,msm 正确注册了它的组件。我假设那是 msm 的工作。
我正在以管理员身份安装每台机器和 msi 运行s。下面是一些说明问题的简化 WiX 代码:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="TabCtlTest" Language="1033" Version="1.0.0.0" Manufacturer="A Company" UpgradeCode="bd70911b-976f-462d-b381-26bc4dc0758e">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate EmbedCab="yes" />
<Feature Id="ProductFeature" Title="TabCtlTest" Level="1">
<ComponentGroupRef Id="ProductComponents" />
<MergeRef Id="TABCTL32"/>
<MergeRef Id="COMCAT"/>
<MergeRef Id="OLEAUT32"/>
</Feature>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Merge Id="TABCTL32" SourceFile="$(env.ProgramFiles)\Common Files\Merge Modules\TABCTL32.MSM" Language="1033" DiskId="1" />
<Merge Id="COMCAT" SourceFile="$(env.ProgramFiles)\Common Files\Merge Modules\COMCAT.MSM" Language="1033" DiskId="1" />
<Merge Id="OLEAUT32" SourceFile="$(env.ProgramFiles)\Common Files\Merge Modules\OLEAUT32.MSM" Language="1033" DiskId="1" />
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="TabCtlTest" />
</Directory>
</Directory>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<Component Id="cmp59A149A53D5CFB2D09E03E213D57D2E4" Guid="{BA66D5C5-0813-4822-9F40-8E5C9B242E8B}">
<File Id="fil36DDAE6925146DA614B90C0E87BD68AC" KeyPath="yes" Source="..\vbprog\Project1.exe" />
</Component>
</ComponentGroup>
</Fragment>
</Wix>
我正在使用 Visual Studio 2015 和 WiX 3.9。
在使用 Orca 仔细研究了不同的 msi 之后,我发现了一些缺失的项目。当我添加
<InstallExecuteSequence>
<RegisterClassInfo Sequence="4200" />
<RegisterProgIdInfo Sequence="4300" />
<WriteRegistryValues Sequence="4400" />
</InstallExecuteSequence>
到产品节点,它导致 COM 注册发生。似乎 InstallShield 和 Visual Studio Installer 会自动执行此操作,但是,就像很多事情一样,要使用 WiX 执行此操作,您必须深入研究并自己弄清楚。不,我不知道这些序列号应该是什么。在比较了 Orca 显示器后,我把它们从我的帽子里拿出来了。