我有幾個VB6 ActiveX服務器exe文件需要在安裝前註冊才能使用。使用WiX註冊ActiveX exe服務器
我試過使用Heat來提取信息,但它只生成一個文件元素。
可以通過使用/ regserver開關調用這些文件來註冊這些文件,並通過使用/ unregserver開關調用它們來取消註冊。我明白這不是正確的方法。相反,我應該將註冊表項和其他必需元素添加到我的wix源中。
我的問題是如何找出我需要註冊這些ActiveX exe文件的註冊表項和其他元素。看到熱像似乎無法收穫這些信息。
我有幾個VB6 ActiveX服務器exe文件需要在安裝前註冊才能使用。使用WiX註冊ActiveX exe服務器
我試過使用Heat來提取信息,但它只生成一個文件元素。
可以通過使用/ regserver開關調用這些文件來註冊這些文件,並通過使用/ unregserver開關調用它們來取消註冊。我明白這不是正確的方法。相反,我應該將註冊表項和其他必需元素添加到我的wix源中。
我的問題是如何找出我需要註冊這些ActiveX exe文件的註冊表項和其他元素。看到熱像似乎無法收穫這些信息。
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>
我怎麼找出註冊表項 等元素我需要 註冊這些ActiveX exe文件
通常,您可以發現註冊表更改如下:
使註冊表處於乾淨狀態 例如,使用myapp.exe /unregserver
創建註冊表 內容這樣
c:\WINDOWS\system32\reg.exe export dump1.reg
執行命令的轉儲將更改註冊表,例如myapp.exe /regserver
創建 註冊表的另一個dump2.reg。
找到與 版本比較工具 dump1.reg和dump2.reg之間的差異(例如TortoiseSVN 增加了一個「差異」命令,將 右鍵菜單,當你有選擇 兩個文件了)
您應該忽略的差異可能存在一些噪音。一個典型的例子是HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\RNG\Seed
。該註冊表鍵由Windows CryptoAPI用來存儲連續聚集的熵。順便提一句,這個密鑰有時會出現在由商業設置生成器生成的MSI包中。這似乎表明他們使用了一種類似的註冊表嗅探技術:-)
我與來自WiX 2.0的tallow有相同的問題,並且必須爲out-pro-proc服務器實現註冊表收集。這裏是patched tallow。如果將ProcessWithInjectedDll類合併到Heat中並且可能會在某個時刻收斂到主幹,那將會很好。
請注意,VB6運行庫中的大量垃圾文件會存入生成的註冊表項中。生成的輸出不經過一些調整就無法使用。這是CleanupRegInclude.vbs可用的時候。
最後但並非最不重要的是,絕對文件名和路徑是無用的。您必須使用#YourComponent和$ YourComponent(請檢查MSI文檔)。
我以爲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標記可以添加到您的項目中。
我嘗試了熱量和@Glytzhkof提到的regspy,但發現我的COM服務器都沒有完成所有相關注冊表信息的提取。然而,我找到了一個實用工具 - RegSpyUI - 那種裝有InstallShield的工具,它做得很漂亮。更詳細地描述here。