我們的產品包含一個VC++ ATL in-proc COM服務器,帶有兩個COM公開類 - ClassA和ClassB。將此COM服務器添加到Install Shield 2008安裝程序包中,併爲該組件設置「在生成時提取COM」屬性。如何安裝屏蔽「在生成COM提取」工作?
ClassA和ClassB以組件的完全相同的方式公開 - 每個都有一個.rgs文件,兩個.rgs文件被編譯到組件資源中,併爲它們調用CAtlModule :: UpdateRegistryFromResourceS()。
但是,當我們在COM服務器上運行regsvr32時,這兩個類都正確地向註冊表公開,但是當我們運行該程序包的安裝時,只有其中一個被Install Shield公開。
Install Shield如何發現它要對註冊表進行哪些更改?我們應該檢查什麼來檢測問題的根源?