2009-10-29 79 views
4

我有幾個VB6 ActiveX服務器exe文件需要在安裝前註冊才能使用。使用WiX註冊ActiveX exe服務器

我試過使用Heat來提取信息,但它只生成一個文件元素。

可以通過使用/ regserver開關調用這些文件來註冊這些文件,並通過使用/ unregserver開關調用它們來取消註冊。我明白這不是正確的方法。相反,我應該將註冊表項和其他必需元素添加到我的wix源中。

我的問題是如何找出我需要註冊這些ActiveX exe文件的註冊表項和其他元素。看到熱像似乎無法收穫這些信息。

回答

2

ActiveX控件只是COM對象。你需要做登記的最低金額是這樣的:

<RegistryKey Root="HKCR" Action="createAndRemoveOnUninstall" Key="CLSID\{YOUR-GUID-HERE}"> 
    <RegistryKey Action="createAndRemoveOnUninstall" Key="InprocServer32"> 
     <RegistryValue Action="write" Value="[INSTALLDIR]YOUR-DLL-HERE.dll" Type="string"/> 
     <RegistryValue Action="write" Name="ThreadingModel" Value="Apartment" Type="string"/> 
    </RegistryKey> 
    </RegistryKey> 

您可能需要註冊一個程序ID:

<RegistryKey Action="createAndRemoveOnUninstall" Key="ProgID"> 
     <RegistryValue Action="write" Value="YOUR.PROGIDHERE" Type="string"/> 
    </RegistryKey> 
2

我怎麼找出註冊表項 等元素我需要 註冊這些ActiveX exe文件

通常,您可以發現註冊表更改如下:

  1. 使註冊表處於乾淨狀態 例如,使用myapp.exe /unregserver

  2. 創建註冊表 內容這樣

    c:\WINDOWS\system32\reg.exe export dump1.reg 
    
  3. 執行命令的轉儲將更改註冊表,例如myapp.exe /regserver

  4. 創建 註冊表的另一個dump2.reg。

  5. 找到與 版本比較工具 dump1.reg和dump2.reg之間的差異(例如TortoiseSVN 增加了一個「差異」命令,將 右鍵菜單,當你有選擇 兩個文件了)

您應該忽略的差異可能存在一些噪音。一個典型的例子是HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\RNG\Seed。該註冊表鍵由Windows CryptoAPI用來存儲連續聚集的熵。順便提一句,這個密鑰有時會出現在由商業設置生成器生成的MSI包中。這似乎表明他們使用了一種類似的註冊表嗅探技術:-)

3

我與來自WiX 2.0的tallow有相同的問題,並且必須爲out-pro-proc服務器實現註冊表收集。這裏是patched tallow。如果將ProcessWithInjectedDll類合併到Heat中並且可能會在某個時刻收斂到主幹,那將會很好。

請注意,VB6運行庫中的大量垃圾文件會存入生成的註冊表項中。生成的輸出不經過一些調整就無法使用。這是CleanupRegInclude.vbs可用的時候。

最後但並非最不重要的是,絕對文件名和路徑是無用的。您必須使用#YourComponent和$ YourComponent(請檢查MSI文檔)。

1

我以爲heat.exe已被更新爲能夠收穫COM EXE文件,但我想它可能還沒有實現。

我通常使用一種稱爲RegSpy/RegSpy 2來提取DCOM EXE文件,COM信息工具:http://www.installsite.org/pages/en/tt_analyze.htm#RegSpy

使用上述工具將爲您提供一個reg文件,但您仍然需要轉換爲WIX格式。要獲得reg文件你去:

regspy2.exe myfile.exe >> myfile.reg

我不認爲有一種方法可以自動轉換一個reg文件格式WXS(我記得前一段時間寫了一個基本的轉換器,但沒有在這裏)。爲了方便您,可以使用Installshield或Wise For Windows Installer提取所需信息,構建MSI,然後使用dark.exe(wix反編譯器)將msi反彙編爲Wix格式。生成的Wix標記可以添加到您的項目中。

0

我嘗試了熱量和@Glytzhkof提到的regspy,但發現我的COM服務器都沒有完成所有相關注冊表信息的提取。然而,我找到了一個實用工具 - RegSpyUI - 那種裝有InstallShield的工具,它做得很漂亮。更詳細地描述here