2013-03-16 50 views
0

我有一個使用wxpython生成的GUI,它用於選擇wix項目創建msi所需的路徑。從GUI選擇的路徑被寫入時,上點擊註冊表在GUI.The選擇的路徑應用按鈕被存儲在變量說數據即:python腳本發送變量到wix源代碼路徑

data='C :\Sandbox\build\Windows\release\my.exe 

以及寫入到註冊表即:

HKEY_CURRENT_USER\Software\Automation\myapp 

現在我已經開發了wix項目來使用msbuild創建msi。我希望GUI中的選定路徑必須進入wix組件的源路徑。我的維克斯代碼有點像下面,

<Component Id='MainExecutable' Guid='*'> 
    <File Id='ExecutableFile' Name='my.exe' DiskId='1' Source='$(var.Sandbox)\my.exe' KeyPath='yes' Checksum='yes'/> 
</Component> 

有了上面的代碼中,我得到一個錯誤的說法,

error CNDL0150: Undefined pre processor variable '$(var.Sandbox)' 

如何傳遞這是由GUI選擇文件源變量「數據」 wix中的路徑?是否有可能發送註冊表值wix?

回答

1

從python腳本傳遞變量「數據」到維克斯的MSBuild的property.Python腳本看起來像下面

data='C:\Sandbox\build\Windows\release\my.exe' 
arg1 = '/t:Rebuild' 
arg2 = '/p:Configuration=Release' 
arg3 = '/p:Platform=x86' 
arg4 = '/p:ExePath=data' 
p = subprocess.call([self.msbuild,projpath,arg1,arg2,arg3]) 

和使你的變化wixproject像下面。

<PropertyGroup> 
    <DefineConstants> 
    Sandbox=$(ExePath) 
    </DefineConstants> 
</PropertyGroup> 

並在WXS文件更改組件的源路徑如下

<Component Id='MainExecutable' Guid='*'> 
<File Id='ExecutableFile' Name='my.exe' DiskId='1' Source='$(var.Sandbox)\my.exe' KeyPath='yes' Checksum='yes'/>  
</Component> 
0

當您致電candle.exe時,您需要通過名爲Sandbox的預處理器變量傳遞data變量。你這樣做了摘錄行,看起來像:

from subprocess import call 
call(["candle.exe", "-dSandbox=" + data]) 

當然,你需要的路徑添加到您的.wxs文件和所有即得。

+0

試圖與您的code.getting錯誤象下面WindowsError:[錯誤2]系統無法找到指定文件 – Aramanethota 2013-03-18 07:12:40

+0

我的代碼是一個片段。您需要提供其餘的代碼(包括要編譯的文件和輸出文件夾,如果您要指定的話)才能使其工作。 – 2013-03-18 13:53:47