我正在開發一個部署項目(基於Wix),用於部署應用程序以使用AutoCAD運行,並在傳遞AutoCAD acad.exe時創建快捷方式它自己的論點。32位MSI:將64位應用程序的快捷方式目標路徑轉換爲32位路徑
爲了達到這個目的,有一個自定義動作DLL(C++)通過Autocad的註冊表鍵來獲取「acad.exe」位置,並在運行時使用MyInstaller.msi中的MSI Api方法創建/更新快捷方式。
問題:
在64位操作系統,如Windows 7,自定義操作讀取正確的註冊表從 '的acad.exe' 位置即C:\ Program Files文件\ AutoCAD 2010的\的acad.exe,和更新運行時msi中的快捷方式屬性。但是,當msi完成創建快捷方式時,路徑將轉換爲32位程序文件,即C:\ Program Files(x86)\ AutoCAD 2010 \ acad.exe,實際上它不存在。
我周圍的工作:
由於我的MSI是32位(x86)的,所以我創建了Win64的屬性= YES和修改自定義操作獨立的組件來更新/此組件創建快捷方式。但是快捷方式中的目標路徑仍被轉換爲C:\ Program Files(x86)。
我知道如果我將MSI轉換爲x64操作系統,這可能會得到解決,但目前我無法做出如此大的改變。
有什麼辦法可以讓32位msi創建包含x64操作系統路徑的快捷方式?
任何幫助將非常感謝..
非常感謝。
嗨克里斯托弗 非常感謝詳細的答覆:)。 那麼,我必須使用自定義操作來使用迭代方法來讀取AutoCAD註冊表項。迭代方法的目的是由於在一臺機器上存在多個版本的AutoCAD,因此我必須爲每個版本的AutoCAD創建快捷方式,同時傳遞一些要由AutoCAD加載的文件的參數。這不能通過MSI的AppSearch/Reglocator完成。 您提出的另一種方式是我現在正在考慮的方法。然而,在此之前,我會試圖將長路徑轉換爲短路徑。 – 2010-07-18 18:57:16
創建一個64位EXE是一個不錯的主意,但我必須首先與我的項目團隊經理討論,我不認爲他們會同意這個:(。 – 2010-07-18 18:58:21
唯一的方法,我通過試驗樣本安裝這是64位MSI和組件也是64位。 所以我也考慮到有64位操作系統的獨立的x64bit微星,因爲x64bit MSI能夠提供32位組件。 非常感謝考慮我的查詢。:) – 2010-07-18 19:00:15