簡體   English   中英

在32位安裝上以64位運行的自定義操作

[英]Custom Action running as 64-bit on 32-bit install

此應用程序是較大應用程序的插件。 要完成安裝,我們需要運行主應用程序提供的批處理腳本。 批處理腳本錯誤指出某個注冊表項不存在,但存在於注冊表的WOW6432部分中。 似乎該自定義操作正在作為64位運行,試圖在沒有WOW6432的情況下獲取注冊表。 我無權訪問或控制批處理文件,因此無法更改它以檢查注冊表的兩個部分。

如何確保自定義操作以32位運行?

運行批處理文件時,cmd進程以64位模式運行。

編輯 :要檢查它是否運行64 vs 32,我創建了一個單獨的批處理腳本,該腳本檢查在HKLM / Software / SomeKey中查找注冊表項。 該密鑰實際上位於HKLM / Software / Wow6432 / SomeKey中。 使用%windir%\\ SysWow64 \\ cmd.exe手動運行它(任務管理器將此進程標記為* 32)可以正常工作。 使用常規cmd.exe運行它時,找不到注冊表項。 將相同的批處理文件作為自定義操作放入wix會導致非* 32 cmd打開,並且注冊表項搜索失敗。

我在Wix中設置此批處理,如下所示:

<CustomAction Id="batchCA" Property="BATCHFILE" ExeCommand="" Execute="deferred" />

其中BATCHFILE是屬性,請設置批處理文件路徑。 即“ C:\\ temp \\ batch.cmd”。 似乎運行良好,但我做錯了嗎?

您應該明確指定命令行exe為32位。 因此,您應該使用以下命令,而不是像“ yourScriptName.cmd”那樣直接調用您的批處理:

%windir%\SysWoW64\cmd.exe /c yourScriptName.cmd

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM