2009-04-30 69 views
1

我的安裝中的一個文件需要複製到用戶目標機器上的註冊表項/值對所指向的位置。如何將文件安裝到Installshield Installscript-MSI項目中的註冊表項/值所指向的目錄中?

現在,我有一種kludgy解決方案,我將文件設置爲在組件視圖中複製到[TempFolder],然後在我的OnFirstUIBefore()函數中獲取一些自定義InstallScript代碼,該函數從註冊表中獲取值,然後在[TempFolder]上執行一個MSIGetProperty,最後從[TempFolder]執行一個CopyFile()到我們之前從註冊表中獲取的路徑。

這個工程但有點麻煩。一位同事說他認爲我應該能夠對自定義屬性名稱(如MY_RSRC_DIR)執行MSISetProperty,然後以某種方式使用「組件」窗格中的該自定義屬性將該文件複製到正確的位置。

我可以儘可能在OnBegin()函數中執行MSISetProperty,但試圖將該屬性插入到組件視圖中是我還沒有能夠工作的東西。

有沒有人這樣做,如果是這樣,如何?

回答

1

在InstallScript MSI項目中,您應該採用MSI方法。創建一個輔助文件夾(例如將其添加到文件和文件夾視圖),並將文件添加到它。確保找到它的目錄屬性(像NEWFOLDER1;確保它是全部大寫的)。如果需要,可以編輯Directory表使其成爲TARGETDIR的子項,但這是可選項,並且如果註冊表搜索失敗,可能會導致文件被放置在[WindowsVolume]下,因此最好將其保留爲INSTALLDIR的子項。

然後,如果您可以在成本計算之前找到目錄(即在CostInitialize之前,哪個OnBegin會),您可以使用System Search,SetProperty自定義操作(類型51)或MsiSetProperty()設置屬性(例如NEWFOLDER1) 。如果您必須在成本計算後找到它,則需要使用SetDirectory自定義操作(類型35)或MsiSetTargetPath(),因爲該屬性將不再更新目錄。

這種方式Windows安裝程序將爲您跟蹤文件位置並卸載應該正常工作。

+0

我不知道你剛剛說了什麼。我是一個noob w.r.t installshield。你能提供更多的細節......我會給1點:) – David 2014-03-12 16:09:44

相關問題