0

プロジェクトがmsiを作成するためにwxpython必要なパスを選択するために使用されるGUIを生成しました。GUIで選択されたパスは、GUIの[適用wix]ボタンをクリックするとレジストリに書き込まれます。選択されたパスは、次のような変数に格納されます

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

レジストリに書き込まれるだけでなく、次のようになります。

HKEY_CURRENT_USER\Software\Automation\myapp

これで、msbuildを使用してmsiを作成するために開発されたwixプロジェクトがあります。GUIで選択したパスをwixコンポーネントのソースパスに入れる必要があります。私の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で選択した変数「data」をwixのファイルソースパスに渡すにはどうすればよいですか?レジストリ値をwixに送信することはできますか?

4

2 に答える 2

0

呼び出すときは、という名前のプリプロセッサ変数を介して変数candle.exeを渡す必要があります。これは、次のようなスニペット行を使用して行います。dataSandbox

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

もちろん、.wxsファイルなどにもパスを追加する必要があります。

于 2013-03-16T14:44:32.847 に答える
0

変数「data」をpythonスクリプトからwixにmsbuildプロパティとして渡します。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>
于 2013-03-22T05:05:25.893 に答える