4

COMサーバーコンポーネントを登録する次のWiXコードがあります

<Component Id="ServerComponent" Guid="<someguid>">
    <File Id="comserverid" Name="comserver.exe" Source="path_to_com_server" DiskId="1" Checksum="yes" >
        <TypeLib Id="{<TYPELIBGUID>}" Description="ComServer 1.0 Type Library"  HelpDirectory="INSTALLLOCATION"  Language="0" MajorVersion="1" MinorVersion="0">
            <AppId Description="ComServer" Id="{<APPIDGUID>}}">
                <Class Id="{<SOMECLASSGUID>}" Context="LocalServer32" Description="ComServerClass Class" ThreadingModel="apartment" Advertise="no">
                    <ProgId Id="ComServer.ComServerClass.1" Description="ComServerClass Class">
                        <ProgId Id="ComServer.ComServerClass" Description="ComServerClass Class" />
                    </ProgId>
                </Class>
            </AppId>                                
        </TypeLib>
    </File>
    <RegistryValue Root="HKCR" Key="AppID\comserver.exe" Name="AppID" Value="{<APPIDGUID>}" Type="string" Action="write" />
</Component>

そして、サーバーは正常に登録されますが、プログラムを「実行」モードで実行すると、プログラムはCOMサーバーを認識しませんでした。

アドバイスしてください-WIXコードを変更する方法

更新:答えは-昇格されたアクセス許可でWiXスクリプトを実行するかcomserver.exe /regserver、昇格されたアクセス許可で実行しますが、機能しません。上記のスクリプトは便利だと思うので、質問はそのままにして、少し違う質問を作成します

4

1 に答える 1

2

ALLUSERSプロパティの値を確認してください。マシンごとにインストールする場合は、1または2に定義する必要があります。ユーザーごとにインストールする場合、レジストリの更新はHKLMではなくHKCUに書き込まれます。(HKCRは、インストールの範囲に応じて、HKCU \ Software\ClassesまたはHKLM\Software \ Classesのいずれかを指すことができます)。

于 2012-08-14T14:20:36.567 に答える